2012-12-21 10 views
6

NSLocalizedStringの実装をデバッグするときに問題があります。単純なはずですが、私が何をしても、関数はKEY文字列を返します。iOS - NSLocalizedStringはキー文字列を返すだけです

私はXCodeの4.5とiOS6を使用しているので、私だ:

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

私がこのアプリケーションを実行すると、値"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が有効なパスです

誰もがいずれかを持っています:

もう少しこのにジャンプするには、私もこれを試してみました。どのようにこれをデバッグするのですか?私はそこのすべての質問/回答を読んだようですが、提案の助けはありません。

私はNSLocalizedStringKEYの文字列を返すことを認識しています。私のアプリがKEYに一致しない理由をデバッグする方法がわかりません。

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

+0

代わりに 'table:nil'を' table:@ "File" 'にしてはいけませんか? –

+0

@ H2CO3:うわー、はい、ありがとう。それは英語のバージョンをつかむ、と私は非常にうまく動作してうれしいです。しかし、最終的には、NSLocalizedStringが必要なので、そのメソッドの便利さを利用できます。私はNSLocalizedStringを多分に働かせるために何かに "File.strings"の名前を変更する必要がありますか? – Brett

+0

あなたはアクセス権があると予想されるすべてのローカリゼーションを "XXX.lproj/Localized.strings"に入れなければなりません。また、なぜ** NSLocalizedString()を使用する必要がありますか? –

答えて

10

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

NSString *value = NSLocalizedStringFromTable(@"key", @"File", nil); 
+0

パーフェクト!ありがとう! – Brett

0

は(のLocalizable.stringsにダブルclicクリックをInfoPlist.stringsファイルの名前を変更)した後、あなたLocalizable.stringsが、それは "として定義されていたのに対し、 「bla.bla.blabla.Book Sたくさん」:そのキーの正しい文字列を取得します

1

私の場合は問題は、文字列の場合としましたbla.bla.blabla.Book sロット "

したがって、キー文字列が大文字であることを再度確認してください。コピー・ペーストする方がいいです。

+0

彼らは同じです... – Warpzit

+0

@Warpzit、彼の場合 - おそらく。私はキーが大文字と小文字を区別していることを指摘しています – user3099609

+0

あなたは私がX = Xで問題を抱えていると言っています...それは問題ではありません、今あなたが私の場合X!= Yで言ったら、それは意味をなさないでしょう... – Warpzit

関連する問題