Ray Wenderlichのローカライズに関するチュートリアルの1つをフォローしていましたが、機能していないようです。
私は英語とフランス語のローカライズ用にプロジェクトをセットアップしました。それぞれにlocaziable.stringsファイルがあります:
フランス語のファイルには、(Googleが翻訳する限りでは)私の文字列のフランス語バージョンがあります:
Localizable.stringsファイルから正しいキーを呼び出して、文字列を設定しています。
NSString* strTitle = [NSString stringWithFormat:NSLocalizedString(@"Title", Nil)];
そして、私はフランス語に設定されたシミュレーターを持っています(BTW:言語を変更するたびに、シミュレーターがクラッシュします)。
ただし、適切なlocalizable.stringsファイルからは取得しません。まだ英語で表示されます:
私は何か間違っていますか?
たぶん、ファイルLocalizable.strings
はすでに存在していますが、まだローカライズされていません。この場合、このローカライズされていないファイルは、シミュレーターのアプリケーションバンドルのリソースフォルダーに残っています(シミュレーターまたはデバイスでアプリの新しいバージョンを実行するときに、未使用のファイルは削除されません)。これは問題を引き起こす可能性があります。
シミュレーターからアプリを完全に削除して、もう一度実行をビルドしてみてください。
デバイスで同様の問題(私の場合はIBローカライズ)が発生しました。だから一般的な答えは
デバイス-アプリをアンインストールし、Shift + CMD + Kでプロジェクトをクリーンアップします
シミュレーター-iOSシミュレーターに移動>コンテンツと設定をリセットし、Shift + CMD + Kでプロジェクトをクリーンアップ
これらの問題は本当に迷惑です。ローカライズされた文字列を更新する能力が低いことに加えて、ローカリゼーションはiOS開発の最大の欠点の1つです。
ローカライズが機能しない原因となる別の問題は、文字列ファイルのエンコードです。 Localizable.stringsのエンコーディングはUTF-16である必要があります。 xcodeのテキストファイルのデフォルトのエンコーディングはUTF-8であるため、ローカリゼーションが機能しない理由を確認するのに丸一日かかります。
Xcode 6.0以降では、シミュレータの言語を変更してもローカライズが機能しません。
アプリケーションを実行する前にスキームを編集する必要があります。
[スキームの編集]-> [実行]-> [オプション]に移動し、ここで言語を変更します。
次に、アプリケーションを実行します。それが動作します。
詳細については、この回答を確認してください: iOS 8.1シミュレーターの言語の変更は機能しません
これに関する私の問題は、ローカライズファイルで誤ってエンコードされた文字でした。