iPhone / iOS: как получить список локализованных строк на всех языках, на которых локализовано мое приложение? - PullRequest
16 голосов
/ 10 июня 2011

Мне нужно отправить на сервер список локализаций для конкретной строки.

То есть, если в моем приложении есть строка Foo, локализованная как @ "Foo" на английском языке и @ "Фу" на русском, я бы хотел отправить серверу такой список:

  • Строка Foo:
    • Английский: "Foo"
    • Русский: "Фу"

Я думаю, что мне нужно уметь:

  1. Перечислять локализованные строки для каждого языка, для которого локализовано мое приложение
  2. Получите локализованную версию Foo для каждого языка

Как мне поступить (1) и как мне поступить (2)?

1 Ответ

33 голосов
/ 24 июня 2011

Вы можете получить все строковые ключи, прочитав 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));
}
...