#ios #localization #localizable.strings #xliff
#iOS #локализация #localizable.strings #xliff
Вопрос:
Я локализовал свое приложение для немецкого и английского языков. За исключением некоторых пустых переводов, формат строк должен быть в порядке, поскольку я не получаю никаких ошибок от xCode. plutil -lint <name of the strings file>.strings
говорит, что все локализованные файлы в порядке.
Я переключил язык приложения в схеме моей цели на немецкий. В зависимости от сборки / запуска переводятся либо InfoPlist.strings, либо Localizable.strings. Либо приложение (Localizable.strings), либо ярлыки и описания использования NS … (InfoPlist.strings) на немецком языке.
Я уже много пробовал в симуляторе и на разных устройствах с разными версиями iOS. Я очистил сборку, очистил папку сборки, удалил папку DerivedData. Я также удалил приложение. Я убедился, что файлы .strings добавлены к цели. Я изменил кодировку на UTF-16 и обратно на UTF-8. Тоже безуспешно. К сожалению, похоже, ничего не работает.
Я импортировал и экспортировал строки из файлов .xliff. Возможно, это как-то связано с этим. До того, как я работал с импортом / экспортом, переводы работали просто отлично.
Это кажется таким случайным. Чего мне не хватает?
Ответ №1:
Я потратил еще некоторое время на проблему и нашел ответ на свою проблему — я думаю. При импорте отредактированных и экспортированных файлов .xliff из xCode в xCode был обновлен InfoPlist.strings. Импорт добавил двойные кавычки к каждому ключу.
Перед импортом
ShortCutSearchTitle = "Suche"; //working
После импорта
"ShortCutSearchTitle" = "Suche"; //not working
Я удалил двойные кавычки, и строки были правильно переведены на устройстве. Возможно, требуется чистая сборка, но она даже мгновенно работала на устройстве. На данный момент я не знаю, почему само приложение (Localizable.strings) несколько раз показывало неправильные переводы. Возможно, это была проблема с кэшированными файлами или любая другая вещь, которую я пробовал.
С другой стороны, в симуляторе мне нужно было
- удалите приложение
- сбросьте симулятор
- измените язык устройства
- создайте и запустите приложение
для того, чтобы показать переведенный InfoPlist.strings. Кажется, что InfoPlist.strings кэшируется до тех пор, пока симулятор не будет сброшен. Я думал, что изменение языка приложения в схеме (Product / Scheme / Edit Scheme / Run) также повлияет на InfoPlist.strings, но это не так. Только изменение языка симулятора будет отображать предупреждения об использовании и пользовательский переведенный InfoPlist.strings на правильном языке.
Я рад, что нашел «ошибку»? с двойными кавычками, но я также беспокоюсь, что теперь мне, возможно, придется менять двойные кавычки после каждого импорта вручную.
Комментарии:
1. да, похоже, вам действительно нужно изменить язык симулятора, чтобы InfoPlist.strings работал…