1

次のコードを使用して、ローカライズされた文字列を返しています。

[self.languageBundle localizedStringForKey:key value:key table:nil];

英語の場合は問題ありません。ただし、オランダ語の場合、デフォルトは英語です。すべてを明確にするために、self.languageBundle は最初の起動時にコピーされる空のバンドルです。次に、2 つのローカライズ ディレクトリ (en.lproj と nl.lproj) が作成され、両方のディレクトリに Localizable.strings ファイルが作成され、正しいローカライズ文字列が入力されます (チェックしました)。

次を使用して言語を変更します。

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"nl"]
                                                  forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

ただし、nl.lproj ではなく en.lproj 内のローカリゼーションをロードします。

4

2 に答える 2

0

プロジェクトにlocalized.stringファイルを追加した場合は、プロジェクトで自動的に作成される他のすべてのローカライズされたファイルを削除します。このリンクを試してください。

于 2012-12-03T09:13:02.863 に答える
0

実行時に言語を変更しようとしているようですが、Apple はこれを公式にサポートしていません。「AppleLanguages」のキーを変更すると、アプリを閉じて再起動した後にのみ有効になります。

ただし、実行時にアプリのローカライズを変更することは可能です。この質問の回答を参照してください。

積極的で平凡なソリューションでは、NSLocalizableString を使用する代わりに、独自の言語コード変数を保持し、カスタムの LocalizedString 関数を作成します (ソース例では "AMLocalizedString")。これは私のプロジェクトの 1 つで使用した優れたソリューションであり、アプリは問題なく Apple に承認されました。

また、この方法では、通常どおりデフォルトの Localizable.strings ファイルを使用できるため、最初のアプリの起動時にディレクトリを作成して Localizable.strings をコピーする必要はありません。

于 2012-12-04T07:32:16.307 に答える