NSLocalizedStringは、参照されるキーの期待値を返す場所の半分にしか動作しません。私はNSLocalizedStringで指定されたキー名を取得し、他のすべての実行で一貫して発生します。NSLocalizedStringは時々文字列を読み込みます。
現在のところ、私は現時点で英語のみをサポートしています。
私が呼んでいる:en.lproj /のLocalizable.stringsの
NSString *someText = NSLocalizedString(@"mystring.keyname", nil);
内容:
"mystring.keyname" = "Hello there!";
それが正しく動作していない場合は、someText's
値はmystring.keyname
です。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSLog(@"Strings file: %@", [bundle pathForResource:@"Localizable" ofType:@".strings"]);
NSLog(@"Localizations: %@", [bundle localizations]);
NSLog(@"Local Dict: %@", [bundle localizedInfoDictionary]);
NSLog(@"localizedStringForKey: %@", [bundle localizedStringForKey:@"mystring.keyname"value:@"Wha happened?" table:nil]);
NSLog(@"Localized String: %@", NSLocalizedString(@"mystring.keyname", @"Are you sure you want to start a new game?"));
}
これは期待値を出力し、他のすべての実行:
Run #1:
Local Dict: (null)
localizedStringForKey: Hello there!
Localized String: Hello there!
Run #2:
Local Dict: (null)
localizedStringForKey: Wha happened?
Localized String: mystring.keyname
私のファイルはようにレイアウトされています
WORKSPACE_DIR/
my_workspace_name.xcworkspace
PROJECT_DIR/
- my_project_name.xcodeproj
RESOURCES_DIR/
- en.lproj/
Localizable.strings
ここ
は、私は、信頼性をテストしています方法です
Xcodeのプロジェクトレベルの設定:
1) Build Phases has Localizable.strings listed in the "Copy Bundle Resources".
2) Build Settings:
Convert Copied Files => YES
Property List Output Encoding => binary
Strings file Output Encoding => UTF-16
3) Info.plist's: CFBundleDevelopmentRegion => 'en'
ファイルインスペクタで文字列ファイルが選択されているテキスト設定オプションは表示されませんが、Localizable.stringsはUTF-16として設定されています。しかし、私はUnix LFでUnicode(UTF-16)としてエンコーディングを表示しているTextWranglerでファイルを開くことで、エンコーディングタイプを確認しました。
これをいつも動かすための提案はありますか?
解決方法を見つけましたか?同じ問題が発生し、他のローカライゼーションが実行されていません。 –