web-dev-qa-db-ja.com

iOSのinfo.plistファイル内の文字列をローカライズする方法

ご存知かもしれませんがiOS 8ではユーザーの位置情報を使用するためにNSLocationWhenInUseUsageDescriptionキーが必要です。このキーといくつかの一般的な情報を私のinfo plistに追加しました。 enter image description here

Plistファイル内で翻訳文字列をどのように使用できますか?

- アップデート -

私はすでにローカライズ可能な文字列を持っています。 plist文字列の中にNSLocalizedString(MYSTRING、nil)のようなものを使用できるのではないかと思います。ローカライズのためにinfo.plistのファイルを複数作成できることは知っていますが、もっと簡単な方法があるのではないかと思いました。

221
Soheil

InfoPlist.stringsの値をローカライズするには、Info.plistファイルを使用する必要があります。これを行うには、File->New->Fileに移動し、ResourceiOSタブでStrings Fileを選択し、InfoPlistと名前を付けて作成します。ローカライズしたいInfo.plist値を開いて挿入します。

NSLocationWhenInUseUsageDescription = "Description of this";

今、あなたは翻訳でInfoPlist.stringsファイルをローカライズすることができます。がんばろう!

編集:

地域対応オプションを選択するか、必要に応じて地域対応を有効にします。

right side editor

左側のエディタでもファイルを見ることができるはずです。

left side editor

編集:

ここでInfo.plistキーローカライゼーションの公式ドキュメントです。

417
Fahri Azimov

上記のすべてが私にはうまくいきませんでした(XCode 7.3)ので、私はやり方についてのAppleの参考文献を読みました、そしてそれは上記よりはるかに簡単です。アップルによると:

ローカライズされた値はInfo.plistファイル自体には保存されません。代わりに、InfoPlist.stringsという名前の文字列ファイルに特定のローカライゼーションの値を格納します。このファイルは、同じローカライズ用の他のリソースを格納するために使用するのと同じ言語固有のプロジェクトディレクトリに配置します。

したがって、私はInfoPlist.stringsという名前の文字列ファイルを作成し、それを "xx"言語のxx.lprojフォルダに配置しました。 File-> Add Files to ...を使用してプロジェクトを作成します。それでおしまい。キー "ローカライズされたリソースを混在させることができます" = YES、およびbase.lprojまたはen.lprojのInfoPlist.stringsは不要です。

言語固有のファイルでキーが見つからない場合、アプリケーションはInfo.plist Key-Valueをデフォルト値として使用します。したがって、私は自分の英語の値をInfo.plistファイルに入れ、翻訳された値を言語固有のファイルに入れて、テストしてすべてうまくいきました。

特に、InfoPlist.strings(base.lproj、en.lroj、およびxx.lprojにファイルのバージョンを作成します)をローカライズする必要はありません。そのようにしてもうまくいきませんでした。

27
Zvi

うまく動かない場合は、追加したことを確認してください。

"ローカライズされたリソースは混在させることができます" = YES

info.plistに入ります。私の場合、InfoPlist.stringsファイルは単に無視されました。

15
tuvok

私はアップルのガイドを読み、ここにリストされているWWDCリソースを見ることを強くお勧めします: 国際化とローカライゼーションのトピック

プロジェクトに新しい言語を追加するときに、あなたの質問に具体的に答えるためにenter image description hereどのInfoPlistファイルを含めるかを選択する機会があります(複数のターゲットがある場合は、複数のInfo plistファイルがあります)。次の画面を表示するために必要なことは、[ローカライズ]の下の[+]を押して、サポートを追加するための新しい言語を選択することです。 enter image description here

追加すると、指定した言語の適切なlprojディレクトリに必要な文字列ファイルが作成されます。

- 編集 -

明確に言うと、iOSはplistエントリのキーをローカライズされたstringsファイルのキーとして使用して、ユーザーの現在選択されている言語に基づいてPlistファイルのストリングを交換します。

8
Matt S.

ヒント

  1. IOSシミュレータはデフォルトでシステム言語を利用することを忘れないでください。あなたの翻訳をテストするためにもiOSシミュレータ設定で言語(そして地域)を変更してください。

  2. ローカライゼーション文字列(ここのAppleドキュメント を参照 )は、

    NSLocationWhenInUseUsageDescription = "Description of this";
    

    ではない(引用符 "..."付き)

    "NSLocationWhenInUseUsageDescription" = "Description of this";
    
4

Xcode 9のように、ローカライズを追加しようとしたときにinfo.plistがインクルードされないという問題を抱えている人のために。

次に示すように、ファイルインスペクタの[ローカライズ]ボタンをクリックして、info.plistをローカライズする必要があります。

Info.plistは、新しいローカライゼーションを追加するときにファイルリソースに含まれます。

enter image description here

4
Edward

RGMLが言うように、InfoPlist.stringsを作成し、それをローカライズしてから、キーと次のような値を追加することができます。

指定した言語のinfo.plistにキーが追加されます。

3
Cap

ステップバイステップのInfo.plistのローカライズ:

  1. X-codeでResourcesというフォルダを探します(rootに置かれます)。
  2. フォルダを選択します
  3. それからメインメニューのファイル - >新規 - >ファイル...を押してください。
  4. [リソース]文字列ファイルを選択して[次へ]をクリックします。
  5. 次に、[名前を付けて保存]フィールドにインフォリストのみ( "I"資本と "P"資本)を入力します。
  6. それからCreateを押します。
  7. 次に、Resourcesフォルダに作成したInfoPlist.stringsファイルを選択し、右メニューの "Localize"ボタンを押します。
  8. 次に、プロジェクトナビゲータからプロジェクトを選択し、プロジェクトからプロジェクトリストを選択します。
  9. 下部の情報タブでは、好きなだけの言語を使うことができます(ローカライゼーションセクションにあります)。
  10. Resourcesフォルダに表示される言語
  11. Info.plistファイルから値( "key")をローカライズするには、テキストエディタで開き、ローカライズしたいすべてのキーを取得します。
  12. 上記の例のように、InfoPlist.stringsに例として任意のキーを記述します。

"NSLocationAlwaysAndWhenInUseUsageDescription" = "blabla";

"NSLocationAlwaysUsageDescription" = "blabla2";

これですべての作業が完了し、info.plistファイルをローカライズしました。

2

私の場合、すべてが正しく設定されていましたが、それでもInfoPlist.stringsファイルが見つかりませんでした。

本当にうまくいった唯一のことは、InfoPlist.stringsファイルを削除して再びプロジェクトに追加することでした。

0
d.ennis

私の場合、ローカライゼーションは名前の ' - '記号のせいでうまくいきませんでした。例: "aero-Info.plist"とローカライズされたファイル: "aero-InfoPlist.strings"と "aeroInfoPlist.strings"は機能しませんでした。

0
Mike Glukhov