2016-10-12 7 views
1

Я локализовал свое приложение для немецкого и английского языков. За исключением некоторых пустых переводов, формат строк должен быть в порядке, так как я не получаю ошибки от xCode. plutil -lint <name of the strings file>.strings говорит, что все локализованные файлы в порядке.iOS Локализация только частично работает

Я переключил язык приложения на схему моей цели на немецкий. В зависимости от сборки/запуска либо InfoPlist.strings или Localizable.strings переводится. Либо приложение (Localizable.strings), либо Ярлыки и NS ... UsageDescriptions (InfoPlist.strings) находятся на немецком языке.

Я уже много пробовал в Симуляторе и на разных устройствах с разными версиями iOS. Я очистил сборку, очистил папку сборки, удалил папку DerivedData. Я также удалил приложение. Я убедился, что файлы .strings добавлены в цель. Я изменил кодировку на UTF-16 и вернулся к UTF-8. Никаких успехов. К сожалению, ничего не работает.

Я импортировал и экспортировал строки из .xliff файлов. Может быть, это как-то связано с этим. Прежде чем я работал с импортом/экспортом, переводы работали нормально.

Это кажется случайным. Что мне не хватает?

ответ

2

Я потратил еще некоторое время на эту проблему и нашел ответ на свою проблему - я думаю. При импорте отредактированных и экспортированных файлов .xliff из xCode в xCode обновляется InfoPlist.strings. Импорт добавляет двойные кавычки к каждому ключу.

Перед импортом

ShortCutSearchTitle = "Suche"; //working 

После импорта

"ShortCutSearchTitle" = "Suche"; //not working 

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

В тренажере с другой стороны, мне нужно

  1. удалить приложение
  2. сброса тренажера
  3. изменить язык устройства
  4. сборки и запустить приложение

, чтобы показать переведенные InfoPlist.strings. Кажется, что InfoPlist.strings кэшируется до тех пор, пока симулятор не будет сброшен. Я думал, что изменение языка приложений в схеме (Product/Scheme/Edit Scheme/Run) также повлияет на InfoPlist.strings, но это не так. Только изменение языка симулятора будет содержать предупреждения об использовании и пользовательские переведенные InfoPlist.strings на правильном языке.

Я рад, что нашел «ошибку»? с двойными кавычками, но я также беспокоюсь, что мне, возможно, придется изменить двойные кавычки после каждого импорта вручную.

+0

Да, похоже, что вам действительно нужно изменить язык симулятора для работы InfoPlist.strings ... – franswa