2

公式ドキュメントInternationalization Programming Topicsによると:

Mac アプリが米国、英国、およびオーストラリアのユーザー向けにローカライズされている場合、バンドル ルーチンは適切な地域ディレクトリ (en_US.lproj、en_GB.lproj、または en_AU.lproj) を最初に検索し、次に en.lproj ディレクトリを検索します。iPhone 上の同じアプリケーションは、en.lproj ディレクトリのみを検索します。

しかし、Localizable.strings を en.lproj ではなくen_US.lproj ディレクトリに配置しようとしましたが、関数を使用して英語で文字列を見つけることができますNSLocalizedString()

どうしたの?

4

1 に答える 1

2

よくわかりませんが、これが私の経験に基づいた推測です。

最初に認識すべきことは、OS X と iOS が大量のコードを共有していることです。公式にはOS X のみであり、実際には iOS でも動作する機能がかなりの数あります。

私が携帯電話で観察したことは次のとおりです。

もし私が持っていたら

- en_US.lproj
    - Localizable.strings

次に、そのファイルから値を読み取り、見つけたドキュメントの内容と矛盾します(指摘したとおり)。

ただし、次の場合:

- en_US.lproj
    - Localizable.strings
- en.lproj
    - Localizable.strings

次に、ドキュメントの精神を尊重して、en.lprojから値を取得します。

現在、Xcode をグラフィカルに使用すると、(US リージョン)en-USとは異なり、ローカリゼーションのみを選択できます。en_USしたがって、あなた (私のように) は Xcode の外に出て、en_US.lprojディレクトリを手動で追加し、後でそれを Xcode プロジェクトに追加したと思います。

Apple の考えは、iOS は引き続き を認識en_US.lprojできますが、そのローカリゼーションを直接作成できないように Xcode を構成しているため、アプリはそこにたどり着かないのではないでしょうか? それで、あなたはその機能に(一種の)ハッキングしました。

もう 1 つ注意: 私が行ったように .lproj フォルダーを手動で作成した場合、Xcode の外部でそれらを変更すると、実際にはなくなっていると思うときに、それらが実際になくなっていることに注意する必要があります。また、この方法で追加 (および削除) した古い .lproj ディレクトリを吹き飛ばすために、アプリをアンインストールする必要がある場合もあります。つまり、これは奇妙な動作を確認するもう 1 つの方法です。

手短に言えば、このままのドキュメントでは、この種のローカリゼーションを含むアプリを App Store に提出するつもりはありません。iOS では公式にサポートされていないため、将来的に拒否されるか、壊れる (文字列値が見つからない) 可能性があります。そうは言っても、この機能が無期限に機能し続けたとしても、私は驚かないでしょう.

于 2013-04-06T09:27:23.920 に答える