Rob Kenigerが正しいです。私もこれを追加したいと思います: 2番目のパラメータとして使用することができます.. デフォルト値 !!
(NSLocalizedStringWithDefaultValueが、私はこのソリューションを提案した理由です、genstringでは正常に動作しません)
ここでは、デフォルト値としてコメントを使用NSLocalizedStringを使用して、私のカスタム実装です:
1。あなたの事前コンパイル済みヘッダー(.PCHファイル)では、 'NSLocalizedString' マクロを再定義:
// cutom NSLocalizedString that use macro comment as default value
#import "LocalizationHandlerUtil.h"
#undef NSLocalizedString
#define NSLocalizedString(key,_comment) [[LocalizationHandlerUtil singleton] localizedString:key comment:_comment]
2.
#import "LocalizationHandlerUtil.h"
@implementation LocalizationHandlerUtil
static LocalizationHandlerUtil * singleton = nil;
+ (LocalizationHandlerUtil *)singleton
{
return singleton;
}
__attribute__((constructor))
static void staticInit_singleton()
{
singleton = [[LocalizationHandlerUtil alloc] init];
}
- (NSString *)localizedString:(NSString *)key comment:(NSString *)comment
{
// default localized string loading
NSString * localizedString = [[NSBundle mainBundle] localizedStringForKey:key value:key table:nil];
// if (value == key) and comment is not nil -> returns comment
if([localizedString isEqualToString:key] && comment !=nil)
return comment;
return localizedString;
}
@end
3.それを使用してローカライズハンドラを実装するクラスを作成します!
App Build PhasesにRunスクリプトを追加して、Localizable.stringsファイルが各ビルドで更新されるようにしてください。あなたのコードでは、この新しい行を追加しますので、
Shell: /bin/sh
Shell script content: find . -name \*.m | xargs genstrings -o MyClassesFolder
:
self.title = NSLocalizedString(@"view_settings_title", @"Settings");
私のビルドフェーズのスクリプトは、シェルスクリプトである:、新しいローカライズされた文字列は、あなたのLocalized.stringsファイルに追加されます
/* Settings */
"view_settings_title" = "view_settings_title";
:
はその後、ビルドを実行する、あなたの./Localizable.scriptsファイルは、この新しい行が含まれますそして
は、MacアプリLinguanを見てみましょう:-)「view_settings_title」、カスタムLocalizedStringHandlerコメントを返します、すなわち「設定」
ほらためのキー==値から - 私が聞いたからアプリのローカライズに役立ちます。 – mattjgalloway