NSLocalizedString как ключ NSDictionary - PullRequest
1 голос
/ 22 октября 2011

Я читал на этом форуме, что можно использовать NSLocalizedString в качестве ключа NSDictionary.

Это мой NSDictionary:

LABELS = [[NSDictionary  alloc] initWithObjectsAndKeys:
NSLocalizedString(@"Threshold 0", @"Description for threshold 0") , @"threshold_0",
NSLocalizedString(@"Threshold 1", @"Description for threshold 1"), @"threshold_1",
NSLocalizedString(@"Threshold 2", @"Description for threshold 2"), @"threshold_2",
NSLocalizedString(@"Threshold 3", @"Description for threshold 3"), @"threshold_3",
NSLocalizedString(@"Threshold 4", @"Description for threshold 4"), @"threshold_4",
          nil];

Это код, пытающийся получить доступ к NSDictionary:

NSString *key = [NSString stringWithFormat: @"threshold_%d",{MY_VARIABLE}];
NSString *text = [LABELS objectForKey: key];

Где {MY_VARIABLE} может содержать значения от 0 до 4.

У меня есть три локализации (итальянская, французская, испанская).Я сгенерировал и перевел все файлы «Localizable.strings» (в папках it.lproj, fr.lproj и es.lproj), но при выполнении приложения я вижу только основной перевод, например: Threshold 0, Threshold 1,...

Где я не так делаю?

1 Ответ

0 голосов
/ 22 октября 2011

Создайте и запустите ваше приложение в симуляторе.В Finder откройте ~ / Библиотека / Поддержка приложений / iPhoneSimulator / your-ios-version / Applications / your-app-id /.

Затем щелкните правой кнопкой мыши файл .app и выберите «Показать содержимое пакета» ипосмотреть, если локализованные строки находятся там, где они принадлежат.

Скорее всего, локализованные ресурсы не были частью вашей цели.Устройства также чувствительны к регистру, поэтому «Localizable.strings» является правильным, а «localizable.strings» - нет.

Если файлы присутствуют, но все еще не работают, откройте файлы в BBEdit и убедитеськодировка UTF-16 с прямым порядком байтов.(В качестве альтернативы вы можете использовать Terminal.app и ввести «file path-to-strings-file», чтобы увидеть тип кодировки).

...