22

この問題に頭がおかしくなり始めてから 2 日が経ちました。

iOS アプリをローカライズしようとしていますが、私の人生ではうまくいきません。現在のプロジェクトではなく、空のプロジェクトで試してみると、十分に簡単に機能します。

「+」を使用してローカリゼーションに言語を追加しました。ストーリーボードをローカライズしましたが、シミュレーターまたはデバイスをチェックすると、まだ英語版が表示されます。そして、実際には、Maintsoryboard (英語) を変更しても、デバイスの変更が表示されないため、英語のものではありません... まだ最初のテキストが表示されます。

シミュレーターのリセット、アプリの削除などを試みましたが、うまくいきません。

バックアップに戻って、すべてをもう一度追加しようとしました。運がない。

誰か助けてくれませんか?大したことではないことはわかっていますが、あなたが私を助けるために何を説明すればよいかわかりません。ですから、情報が不足している場合はお知らせください。

参考までに、Developer でアプリのフォルダーを調べると、最初は en.lproj がありませんが、デフォルトで必要なようです。

4

6 に答える 6

15

あなたはすでにこれを理解しているようですが、おそらく最初に「MainStoryboard.storyboard」をローカライズされていないリソースとして持っていたと思います。つまり、アプリをビルドすると、「MainStoryboard.storyboardc」がローカライズされていないリソースとして取得されます。ストーリーボードをローカライズするように変更すると、バンドル リソースに「Base.lproj/MainStoryboard.storyboardc」が作成されます。

Xcode でビルドしている場合、アプリのコピーがいくつかあります。デバイスまたはシミュレーターにコピーがあり、Xcode の派生データ フォルダーにもコピーがあります。アプリケーションのインクリメンタル ビルドを実行すると、Xcode の派生データ フォルダー内のコピーは、新しいコンテンツと古いコンテンツのマージになります。したがって、Xcode でリソースを変更して再構築すると、最新のリソースが得られます。ただし、リソースの名前を変更または削除すると、クリーン操作を実行するまで古いコピーがビルド ディレクトリに残ります。

これは、ビルド プロダクトに「MainStoryboard.storyboardc」と「Base.lproj/MainStoryboard.storyboardc」の両方が含まれている可能性があることを意味します。NSBundle がリソースをロードするとき、ローカライズされていないコンテンツを優先し、古い「MainStoryboard.storyboardc」をロードします。

于 2012-10-09T04:27:22.463 に答える
10

Main.strings ファイルにタイプミス (二重引用符やセミコロンなど) がないことを絶対に確認してください。入力ミスがある場合、デバイスは単にローカライズされた文字列を無視し、ベースの国際化を適用します。

于 2016-06-30T14:42:53.217 に答える
1

ブラインド ショット: 文字列ファイルが UTF-16 (私の記憶が正しければリトル エンディアン) であり、構文エラー (; または引用符の欠落) がないことを確認してください。また、文字列ファイルの変更後にビルドする前に、プロジェクトをクリーンに実行します。

于 2012-10-08T13:30:38.857 に答える
1

ローカライズされているさまざまな.strings.xib、およびファイルをすべて選択してみてください。.storyboard

File Inspector で、各ファイルについて必要なすべてのローカライズがチェックされていることを確認します。

ローカライズを追加した後、Englishいくつかのファイルでチェックを外しました。したがって、一部のビューは意図しない言語にローカライズされていました。チェックEnglishすると問題が解決しました。

英語のローカライズがチェックされていません

于 2015-08-27T20:28:43.010 に答える