2016-10-12 13 views
1

私はドイツ語と英語のために自分のアプリをローカライズしました。いくつかの空の変換を除いて、xCodeからエラーが出ないので、文字列のフォーマットはokです。 plutil -lint <name of the strings file>.stringsは、すべてのローカライズされたファイルがOKであると言います。iOSのローカリゼーションは部分的にしか動作しません

ターゲットのスキームのアプリケーション言語をドイツ語に変更しました。 ビルド/実行に応じて InfoPlist.strings または Localizable.stringsが翻訳されます。アプリ(Localizable.strings)またはショートカットとNS ... UsageDescriptions(InfoPlist.strings)はドイツ語です。

私はすでに、シミュレータと、さまざまなiOSバージョンの異なるデバイスで多かった。私はビルドをきれいにし、ビルドフォルダをきれいにし、DerivedDataフォルダを削除しました。私もアプリを削除しました。 .stringsファイルがターゲットに追加されていることを確認しました。エンコードをUTF-16に変更し、UTF-8に戻しました。成功もありません。残念ながら、何も動作していないようです。

.xliffファイルから文字列をインポートしてエクスポートしました。たぶんそれはそれと関係があります。インポート/エクスポートを行う前に、翻訳はうまくいきました。

非常にランダムなようです。私は何が欠けていますか?

答えて

2

私は問題にもう時間を費やして、私の問題に対する答えを見つけました。 xCodeからxCodeに編集およびエクスポートされた.xliffファイルをインポートすると、InfoPlist.stringsが更新されました。インポートによって、すべてのキーに二重引用符が追加されました。インポートする前に

ShortCutSearchTitle = "Suche"; //working 

輸入

"ShortCutSearchTitle" = "Suche"; //not working 

後、私は二重引用符を削除し、文字列が正しくデバイスに翻訳されました。たぶんクリーンなビルドが必要ですが、それは即座にのデバイスにも機能しました。私は、なぜアプリケーション自体(Localizable.strings)が間違った翻訳を何度か表示するのか分からない。たぶん、これはキャッシュされたファイルか、私が試した他のもののいずれかでした。私はアプリ をシミュレータ

  • 変更デバイスの言語
  • ビルドをリセットするアプリ
  • を削除して実行し

    1. に必要な一方、シミュレータ

      InfoPlist.stringsを翻訳して表示します。 InfoPlist.stringsは、シミュレータがリセットされるまでキャッシュされているようです。 Scheme(Product/Scheme/Edit Scheme/Run)でアプリケーション言語を変更することもInfoPlist.stringsに影響すると思ったが、そうではなかった。シミュレーター言語を変更するだけで、 'usage'アラートとカスタム言語で変換されたInfoPlist.stringsが正しい言語で表示されます。

      「エラー」が見つかりましたか?二重引用符を使用していますが、手動でインポートするたびに二重引用符を変更する必要があるかもしれないと心配しています。

  • +0

    ええ、実際にInfoPlist.stringsが動作するようにシミュレータの言語を変更する必要があるようです。 – franswa

    関連する問題