16

特定の文字列のローカライズのリストをサーバーに送信する必要があります。

つまり、私のアプリに、英語では @"Foo"、ロシア語では @"Фу" としてローカライズされた文字列 Foo がある場合、サーバーに次のようなリストを送信したいと思います。

  • 文字列フー:
    • 英語:「ふー」
    • ロシア語: "Фу"

私ができる必要があると思うことは次のとおりです。

  1. アプリがローカライズされている言語ごとにローカライズされた文字列を列挙する
  2. 各言語のローカライズされたバージョンの Foo を取得します

(1) と (2) はどのように行うのですか?

4

1 に答える 1

36

English.lproj/Localizable.strings を辞書として読み取り、そのキーをフェッチすることで、すべての文字列キーを取得できます。

NSString *stringsPath = [[NSBundle mainBundle] pathForResource:@"Localizable" ofType:@"strings"];
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:stringsPath];

各言語の翻訳を取得するには、各英語キーの言語を反復処理して、次を使用できますNSLocalizedStringFromTableInBundle

for (NSString *language in [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]) {
    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]];
    NSLog(@"%@: %@", language, NSLocalizedStringFromTableInBundle(@"Testing", @"Localizable", bundle, nil));
}
于 2011-06-24T14:10:41.017 に答える