IPhone/iOS: как я могу получить список локализованных строк на всех языках, на которых локализовано мое приложение?

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

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

  • String Foo:
    • Русский: "Foo"
    • Русский: "Фу"

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

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

Как мне сделать (1) и как это сделать (2)?

Ответы

Ответ 1

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