web-dev-qa-db-ja.com

Localizable.stringsがiOSで機能しない

私はこれが本当に心を打つ問題を抱えています。

XCodeでLocalizable.stringsファイルを作成し、その中に2つの言語を作成しました。

これらのファイルを言語の翻訳で埋め、ビルド/クリーンを行ってから、新しいビルドを行いましたが、プロジェクトにローカリゼーション文字列が表示される方法はありません。私のようなものを試してみると:

self.title = NSLocalizedString(@"HEAD", nil);

翻訳の代わりに「HEAD」のみがデバイスシミュレータに表示されます。

これは私のプロジェクト階層です:

project hierarchy

そして、これは英語のローカライズファイルの内容です。 enter image description here

何か案は?

35
jbssm

自分で答えを見つけました。

プロジェクトのクリーニングとビルド、および上記で説明したすべてのこと以外に。 iPhoneシミュレーターでアプリを削除してから、再度ビルドする必要があります!その後、完全に機能します。

Appleをシンプルにすることについて話してください...

73
jbssm

以下を確認してください:

  1. ファイルの名前は「Localizable.strings」です。
  2. 「Localizable.strings」は、対象のターゲットに属します。

いくつかのチェック:

  1. ファイル名が正確にLocalizable.stringsであり、ターゲットに含まれていることを確認してください
  2. すべての文字列は;で終わります
  3. すべての文字列は、"で二重引用符で囲まれています
  4. コメントは//で始まります(#ではありません)
13
samwize

ビルドフェーズ、バンドルリソースのコピーの下にLocalizable.stringsがあることを確認します。

9
irmu

最初の文字が大文字Localizable.stringsの場合、ファイル名を確認します

4
Adobels

@jbssmのソリューションは動作しますが、より良い方法(毎回クリーニングや削除を行わずにリソースを更新し続けることを確認する)は、Localizable.bundleのアクセス時間を変更するカスタムスクリプトビルドフェーズを追加することです。

https://stackoverflow.com/a/19274844/414037 で説明されているように

3
yonix

私は自分自身に1つの答えを見つけました。

すべての値の末尾に;があることを確認してください。それ以外の場合、動作しません。

2

私の場合、一部のテキストが残っているため、Localizable.stringsファイルは適切にフォーマットされていませんでした。コンパイラは文句を言いませんでしたが、ファイルの不正なセクションの後のすべての文字列は無視されました。私のファイルは次のようになりました。

"Key1" = "String1";

  • 文字列

  • 文字列

  • 文字列

文字列";

"Key2" = "String2";

そのため、適切に処理されていないLocalizable.stringsを必ず手作業で検査してください。コンパイラがすべてのフォーマットエラーをキャッチすることはできません。

0
phatmann

ローカリゼーションに関する私の2セント。ローカリゼーションファイルを調整し、それらを追加および削除し、多くのXcode更新の下でプロジェクトを実行しました。後で、英語以外のローカライズが機能しないことがわかりました。

問題は、baseローカライズが必要であり、左側のファイルが追加されたときに右側のベースにチェックマークを付けて、他の翻訳がアプリに表示されることでした。確かに文字列があります...

enter image description here

0
karim

また、特定の.stringsファイルのエンコーディングを設定する必要がありました。

これを行うには、プロジェクトナビゲータでファイルを選択し、右側のパネルで[テキスト設定]セクションでエンコードを選択します。 Unicode(UTF-8)を使用しました。

enter image description here

0
Chuck Boris
  1. Localizable.stringsの位置を置き換えます
  2. 隠し文字や崇高なテキストを簡単に識別できるように、メモ帳で切り取りと貼り付けを行うLocalizable.stringsとの相互検証を行います。以下の手順に従って解決してください。
  3. ファイル名が正確にLocalizable.stringsであり、ターゲットに含まれていることを確認してください
  4. すべての文字列は;で終わります。
  5. すべての文字列は「」で二重引用符で囲まれます
  6. コメントは//(NOT#)で始まります

また、iPhoneシミュレーターでアプリを削除してから、再度ビルドしてください!その後、完全に機能します。

0
user3108511

このスレッドの他の場所で言及されているすべてのヒントに加えて、Localizable.stringsは、特定の場合にプロジェクトのルートフォルダに配置する必要もあります。

0
Aron