8

NSLocalizedString実装のデバッグに問題があります。シンプルにする必要がありますが、何をしても、関数はKEY文字列のみを返します。

XCode 4.5 と iOS6 を使用しているので、次のようにします。

  1. という新しいファイルを追加しましたFile.strings
  2. 私のプロジェクト設定では、言語設定として英語とスペイン語を追加しました。
  3. ファイルインスペクターで「ローカライズする」をクリックし、英語とスペイン語の両方のオプションが選択されていること、およびターゲットへのターゲットメンバーシップが選択されていることを確認しました。
  4. "KEY" = "TestEnglish";私の英語に追加されましたFile.strings
  5. "KEY" = "TestSpanish";スペイン語に追加File.strings
  6. NSLog(@"Localization: %@\n", NSLocalizedString(@"KEY", nil));私の.mファイルに追加されました。

アプリを実行すると、値"KEY"は常に に出力されて表示されますNSLog

これにもう少し飛び込むために、私もこれを試しました:

NSString *path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
NSString *str = [[NSBundle bundleWithPath:path] localizedStringForKey:@"KEY" value:@"" table:nil];
NSLog(@"Localization: %@\n", str); 

それでも値"KEY" が出力されpathますが、有効なパスです。

これをデバッグする方法を知っている人はいますか? そこにあるすべてのSOの質問/回答を読んだような気がしますが、提案はどれも役に立ちません。

キーと一致しない場合に文字列をNSLocalizedString返すことはわかっKEYていますが、アプリがキーと一致しない理由をデバッグする方法がわかりません。

また、アプリを約12回削除/クリーニングしました。

4

3 に答える 3

10

を指定するとtable:nilNSBundleデフォルト テーブル ( のテーブル) からローカリゼーションを取得しようとしますSOMELANG.lproj/Localizable.strings。他の場所でローカライズしている場合は、明示的にテーブルを指定する必要がありますtable:@"File"(またはNSLocalizedStringFromTable()同様の方法でマクロを使用します:

NSString *value = NSLocalizedStringFromTable(@"key", @"File", nil);
于 2012-12-21T17:30:56.273 に答える
1

InfoPlist.strings ファイルの名前を Localizable.strings に変更すると (ダブルクリック)、そのキーの正しい文字列が取得されます。

于 2014-07-07T19:48:04.910 に答える
1

私の場合、問題は文字列「bla.bla.blabla.Book S lot」のケースにありましたが、Localizable.strings では「bla.bla.blabla.Book s lot」と定義されていました。

そのため、キー文字列の大文字と小文字が正しいことを再確認してください。いっそのこと、コピー&ペースト。

于 2014-07-15T13:47:35.913 に答える