1. ホーム
  2. アイオス

[解決済み】NSLocalizedStringが特定の言語を使用するように強制する方法

2022-04-20 12:24:56

質問

iPhoneについて NSLocalizedString は、iPhoneの言語で文字列を返します。 強制的に NSLocalizedString 特定の言語を使用して、アプリを をデバイスと異なる言語で表示しますか?

解決方法は?

NSLocalizedString() (およびその亜種)は、quot;AppleLanguages" のキーにアクセスします。 NSUserDefaults を使用して、ユーザーがどのような言語を好むか設定することができます。 これは言語コードの配列を返し、最初のものはユーザーが携帯電話用に設定したもので、それ以降のものはリソースが優先言語で利用できない場合のフォールバックとして使用されます。 (デスクトップでは、ユーザーはシステム環境設定のカスタム順序で複数の言語を指定することができます)

setObject:forKey: メソッドを使用して独自の言語リストを設定することにより、必要であれば、独自のアプリケーションのためにグローバル設定をオーバーライドすることができます。 これは、グローバルに設定された値よりも優先され、アプリケーション内でローカライズを行うすべてのコードに返されます。 このコードは次のようなものです。

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", @"en", @"fr", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize]; //to make the change immediate

この場合、アプリケーションの優先言語はドイツ語となり、英語とフランス語はフォールバックとなります。 これは、アプリケーションの起動初期に呼び出したいところです。 言語/ロケールの設定について、詳しくはこちらをご覧ください。 国際化プログラミングのトピックスです。現在の言語とロケールを取得する