Локализация строк из Settings.bundle с использованием InAppSettingsKit - PullRequest
4 голосов
/ 22 октября 2011

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

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

Я думаю, что это сводится к коду, подобному этому, из класса 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».Это не путь к файлу Root.strings на выбранном языке, поэтому я предполагаю, что метод localizedStringForKey:value:table: должен использовать глобальную системную ссылку, указывающую на правильный путь.

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

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

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

Ответы [ 2 ]

1 голос
/ 30 декабря 2012

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

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

0 голосов
/ 09 января 2013

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

Ссылка на класс NSBundle

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

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

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

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

enter image description here

...