Локализация строк из Settings.bundle с помощью InAppSettingsKit

Я пытаюсь использовать InAppSettingsKit для управления своими настройками. При этом используется файл Settings.bundle с файлом .plist и файлы .strings для каждого из переводимых языков.

Я могу подтвердить, что перевод моих строк работает правильно вне моего приложения, с помощью приложения Setting. Но когда я нахожусь в своем приложении, перевод не происходит.

Я думаю, что все сводится к такому коду из класса IASKSettingsReader InAppSettingsKit с парой операторов регистрации, которые, как мне показалось, были полезны:

- (NSString*)titleForStringId:(NSString*)stringId {
    NSLog(@"%@",[_bundle localizedStringForKey:stringId value:stringId table:self.localizationTable]);
    NSLog(@"%@",[_bundle localizedInfoDictionary]);
    return [_bundle localizedStringForKey:stringId value:stringId table:self.localizationTable];
}

Если я правильно понимаю, в качестве источника перевода должна использоваться таблица с именем self.localizationTable. Это значение просто «Корень». Это не путь к Root.strings файлу на выбранном языке, поэтому я предполагаю, что метод localizedStringForKey:value:table: должен использовать некоторую глобальную системную ссылку, указывающую на правильный путь.

Я подтвердил, что имя файла строк - "Root.strings" с большой буквы, в том числе в файле Root.plist.

[_bundle localizedInfoDictionary] возвращает (ноль); Это делается для двух языковых настроек: английского и французского.

Я не знаю, как это отладить. Спасибо за любую помощь, которую вы можете оказать.


person Jim    schedule 22.10.2011    source источник


Ответы (2)


Я без проблем использую InAppSettingsKit с локализованным текстом. Я могу придумать две вещи, которые вы могли бы проверить: находятся ли ваши файлы Root.strings в правильных подкаталогах Settings.bundle (en.lproj и fr.lproj для английского и французского языков?

Есть ли в вашем Root.plist запись "Strings Filename"? Он должен просто содержать строку со значением «Root».

person Gereon    schedule 30.12.2012

Прошло довольно много времени с тех пор, как я решил эту проблему, и в то время я не полностью ее понимал. Но, чтобы закрыть этот вопрос, я укажу на следующую документацию для справок в будущем:

Справочник по классу NSBundle

который относится к следующему:

Руководство по программированию ресурсов

Во втором документе обратитесь к разделу «Строковые ресурсы -> Загрузка строковых ресурсов в ваш код».

Решение содержит правильно настроенный файл Root.strings, который отображается в списке файлов следующим образом:

введите описание изображения здесь

person Jim    schedule 09.01.2013