15

私は自分のアプリでローカリゼーションを使用していましたが、何らかの理由での文字列(一部ではない)の一部が翻訳されません。代わりに値。私は、アプリケーションがこれを行うことによってローカライゼーションファイルを見つけるかどうかを調べようとしました:iOSの値ではなくキーを表示するアプリケーションのローカライゼーション

NSString *enPath = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 
NSString *hePath = [[NSBundle mainBundle] pathForResource:@"he" ofType:@"lproj"]; 
NSString *ruPath = [[NSBundle mainBundle] pathForResource:@"ru" ofType:@"lproj"]; 
NSString *esPath = [[NSBundle mainBundle] pathForResource:@"es" ofType:@"lproj"]; 
NSString *frPath = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"]; 
NSString *arPath = [[NSBundle mainBundle] pathForResource:@"ar" ofType:@"lproj"]; 

そしてどれもnilではありません。

ローカライゼーションファイルの名前を確認しましたが、それはLocalizable.stringsです。 キーがLocalizable.stringsファイル内に存在するかどうかを確認します。

私も試してみた:

  • 再起動
  • リセットシミュレータ
  • はUTF-16
  • に変換
  • 削除派生データフォルダ

    • キャッシュを空にする
    • は、すべてのターゲットをクリーニング
    • すべてのローカリゼーションファイルを削除し、再作成します。

    また、this質問にあるすべてを実行しようとしました。

    これは単なるシミュレータ/キャッシュの問題ではないと言うことが重要です。また、アプリをダウンロードする端末にも表示されます。 (私はエンタープライズアカウントを持っています)。

    問題を特定し解決するために何ができるのですか?

  • +0

    にファイルの名前を変更することができ、あなたのファイルがLocalizable.stringかのLocalizable.stringsと呼ばれていますか? –

    +0

    ファイル名はLocalizable.stringsです。 –

    答えて

    8

    私はこの問題を発見したので、私のためにLocalizable.stringsファイルを翻訳した人はいないと思います。私の文字列内の4ヶ所以下のように行があったファイルに:

    "KEY" ;= "Value" 
    

    この行クラッシュのいくつかの種類を引き起こしますが、何らかの理由で正常にビルドするようにコンパイラにしましょう。だからこそ私はバグを見つけられませんでした。翻訳されていない最後のキーと値をとり、Localizable.stringsファイルの先頭に移動することにしました。それから、問題がファイルの途中にあり、トップキーと値がうまく翻訳されていることを理解して確認できました。

    0

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

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

    また、Localizable.stringsファイルが

    Targets -> BuildPhases -> Copy Bundle Resources 
    
    に追加されていることを ダブルチェックを

    それは私のために自動的に追加されていませんでした。あなたは、エラーのこれらの種類をキャッチ行うことができます

    2

    一つが電子を変更、文字列ファイルのコピーを作成することですxtensionをplistしてXcodeで開くようにしてください。文字列ファイルに問題がある場合は、Xcodeに表示されます。ディクショナリには、エラーのあるポイントまでのキーのみが含まれるためです。すべての文字列がplistファイルに表示されることを確認するまで、Find操作を実行してエラーを見つけることができます。その後、バック.strings

    enter image description here

    関連する問題