web-dev-qa-db-ja.com

XCode 5 / iOS 7-ローカリゼーションがシミュレータで機能しない

Ray Wenderlichのローカライズに関するチュートリアルの1つをフォローしていましたが、機能していないようです。

私は英語とフランス語のローカライズ用にプロジェクトをセットアップしました。それぞれにlocaziable.stringsファイルがあります:

enter image description here

フランス語のファイルには、(Googleが翻訳する限りでは)私の文字列のフランス語バージョンがあります:

enter image description here

Localizable.stringsファイルから正しいキーを呼び出して、文字列を設定しています。

 NSString* strTitle = [NSString stringWithFormat:NSLocalizedString(@"Title", Nil)];

そして、私はフランス語に設定されたシミュレーターを持っています(BTW:言語を変更するたびに、シミュレーターがクラッシュします)。

ただし、適切なlocalizable.stringsファイルからは取得しません。まだ英語で表示されます:

enter image description here

私は何か間違っていますか?

28
PruitIgoe

たぶん、ファイルLocalizable.stringsはすでに存在していますが、まだローカライズされていません。この場合、このローカライズされていないファイルは、シミュレーターのアプリケーションバンドルのリソースフォルダーに残っています(シミュレーターまたはデバイスでアプリの新しいバージョンを実行するときに、未使用のファイルは削除されません)。これは問題を引き起こす可能性があります。

シミュレーターからアプリを完全に削除して、もう一度実行をビルドしてみてください。

24
Theo

Xcode 6.1.1とiOS SDK 8.1を使用している場合は、この回避策を試してください。

ローカリゼーションはxCode 6.1および8.1シミュレータでは機能しないようです。回避策:「スキームの編集」>>「実行」(サイドバー)>>「オプション」タブ>>「アプリケーション言語」に進みます。シミュレータでアプリを実行する言語を選択します。この回避策は 回避策 によって natanavra に感謝します。

ただし、開発者 フォーラム を読んだところ、Xcodeの6.2ベータバージョンで動作していることがわかりました。それを願っています。

46
Rajal

デバイスで同様の問題(私の場合はIBローカライズ)が発生しました。だから一般的な答えは

デバイス-アプリをアンインストールし、Shift + CMD + Kでプロジェクトをクリーンアップします

シミュレーター-iOSシミュレーターに移動>コンテンツと設定をリセットし、Shift + CMD + Kでプロジェクトをクリーンアップ

これらの問題は本当に迷惑です。ローカライズされた文字列を更新する能力が低いことに加えて、ローカリゼーションはiOS開発の最大の欠点の1つです。

12
Viktor Kucera

ローカライズが機能しない原因となる別の問題は、文字列ファイルのエンコードです。 Localizable.stringsのエンコーディングはUTF-16である必要があります。 xcodeのテキストファイルのデフォルトのエンコーディングはUTF-8であるため、ローカリゼーションが機能しない理由を確認するのに丸一日かかります。

11
Leon Qiu

Xcode 6.0以降では、シミュレータの言語を変更してもローカライズが機能しません。

アプリケーションを実行する前にスキームを編集する必要があります。

[スキームの編集]-> [実行]-> [オプション]に移動し、ここで言語を変更します。

次に、アプリケーションを実行します。それが動作します。

詳細については、この回答を確認してください: iOS 8.1シミュレーターの言語の変更は機能しません

4
Mehul Thakkar

これに関する私の問題は、ローカライズファイルで誤ってエンコードされた文字でした。

1
Dakusan