エストニア語、ラトビア語、リトアニア語をサポートする既存の iPhone アプリ (4.x 以降) を拡張しています。
私の iPhone とシミュレーターではこれらの言語はサポートされておらず、これらの地域で使用するための特別なファームウェアも存在しないと確信しています。
それらをサポートするアプリを作成するにはどうすればよいですか?
私はあまり好きではない2つの解決策を思いつきました。ユーザーは Settings.app リストからバンドルされた言語を選択できないため、どちらもアプリに複数の言語を含めることはできません。つまり、言語ごとに 1 つのバージョンを提出する必要があります。
オプション 1: en.lproj ディレクトリを悪用する
ターゲット言語 (lt、lv、et) ごとに、その言語の文字列ファイルを en.lproj ディレクトリに配置しました。
長所:よく知られたメカニズムを使用します。アプリは、英語で実行されていると考えています。
短所:ローカリゼーション ツールに大混乱をもたらします。将来のメンテナを混乱させるため、エラーが発生しやすくなります。奇妙なビルド設定が必要です。
オプション 2: NSUserDefaults[AppleLanguages] を悪用する
NSUserDefaultsのAppleLanguages
オブジェクトには、アプリが使用する言語のリストが含まれています。このように設定することで、たとえばリトアニア語を lt.lproj ディレクトリからアプリにロードさせることができます。
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"lt", nil] forKey:@"AppleLanguages"];
(歴史的な理由から、アプリの一部のバージョンで非推奨の翻訳を削除するために、これのもう少し複雑なバージョンを既に実行しています。そうしないと、アプリにバンドルしなくなったとしても、古いインストールが lproj dir を取得します。)
長所:適切な名前の lproj ディレクトリを使用します。ローカリゼーション ツールとの統合が良好です。シンプルなセットアップ。main.m
実装に必要なのは 1 行だけです。
短所:キーは多くの人に使用されていAppleLanguages
ますが、このソリューションではサポートされていない言語をロードするためにキーが使用されているため、薄い氷の上を滑っているのではないかと心配しています。
ル・クエスチョンズ
- 他のアプリは通常、これらの「サポートされていない」言語をどのようにサポートしていますか?
- 通常サポートされている言語と一緒にそれらをサポートする方法はありますか?
AppleLanguages
ハッキングについてどう思いますか?