локализованная строка xcode не загружена - PullRequest
5 голосов
/ 15 июля 2011

Я столкнулся со странной проблемой с локализованными строками. У меня есть только Localizable.strings в моей папке en.lproj, и она работает нормально. все строки отображаются на устройстве. но в следующий раз, когда я скомпилирую его и запуском, он показывает только идентификатор строк. даже если я ничего не меняю и только нажимаю на build & debug. и в следующий раз он снова будет работать нормально, а в следующий раз снова будет показан с идентификаторами.

так кто-нибудь знает, почему это происходит? досадно, что мне всегда нужно строить дважды.

Ответы [ 2 ]

4 голосов
/ 15 декабря 2011

Мое РЕШЕНИЕ внизу:

Я столкнулся с той же проблемой: чередующиеся прогоны дают правильный, а затем неправильный перевод (только для английского).

Добавление «-NSShowNonLocalizedStrings YES» в качестве аргумента к приложению привело к:

Localizable string "MyKey" not found in strings table "Localizable" of bundle CFBundle

Итак, я попытался загрузить файл ключа непосредственно из пакета в виде строки и вывести его. Ну, раз он не работал правильно, он отображал кучу встроенных сообщений iOS. Итак, я пошел к файлу APP, который был собран, открыл содержимое пакета и просмотрел файл en.lproj / Localizable.strings ... и вуаля !!! Файл был заполнен парами ключ / значение Apple iOS. На следующей сборке он был заполнен, как и ожидалось.

Конечно, это не имеет ничего общего с кодировкой файлов (которая должна быть UTF-16). Я не смог найти ничего с упоминанием этой конкретной проблемы.

МОЕ РЕШЕНИЕ:

Я скопировал содержимое допустимого английского файла Localizable.strings ИЗ ПАКЕТА ПРИЛОЖЕНИЯ (не из моего источника) в файл XML (после компиляции файл .strings преобразуется в XML) и добавил в мой проект. Затем я загрузил этот файл в словарь при запуске, и если вызов NSLocalizedString вернул ключ вместо значения, я произвел поиск в загруженном словаре. Теоретически вы могли бы сделать это для всех языков, но у меня была проблема только с английским.

Да, это не ответ на проблему, но это обходной путь.

3 голосов
/ 12 ноября 2011

Проверьте, есть ли в вашем проекте несколько строк Localizable.strings.Объединить их в один решил для меня.(Проверьте любой внешний код, который вы используете, например ShareKit)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...