2016-05-19 3 views
2

Итак, у меня есть проект, который уже был локализован в прошлом. Но мы создали несколько новых ключей, и мы хотим, чтобы они были переведены отдельно.Экспорт файла xliff на Xcode действует странно

Также на некоторых языках некоторые ключи отсутствуют, поэтому я тоже хотел их найти. Итак, я сделал экспорт файлов xliff для перевода с помощью инструмента экспорта Xcode. Я использую NSLocalizedString везде в моем проекте, поэтому теоретически это должно было меня охватить.

Но когда я открываю файл, экспортированный XLIFF (скажем, на итальянском) У меня есть следующие проблемы:

раздел в файле XLIFF для локализуемого файла в списке дважды. В первый раз это так:

Переводы Projectname/Localizable.strings

В этой части XLIFF файл ВСЕХ переводы отсутствуют, хотя локализуемым файл содержит переведенное значение для большинства ключей ,

Тогда же локализуемый файл в списке дважды, как:

Переводов Projectname/en.lproj/Localizable.strings

В этом случае клавиши имеют свои значения переведено, но если ключ отсутствует в английском локализуемом файле, тогда он также отсутствует здесь.

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

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

Переведенные ключи все отлично работают на самом приложении, попробовав его как на устройствах, так и на симуляторе.

Благодарим за помощь.

ответ

2

Я не использую xliff экспортированных файлов для управления моими переводами, поэтому я не могу дать вам ответ, используя это.

Однако у вас может возникнуть проблема с поиском недостающих локализаций с использованием файлов Localization.strings.

Что вы можете сделать, это использовать команду genstrings для создания файла Localizable.strings, который будет содержать все NSLocalizedString с вашего кода. Для этого вы должны передать все исходные файлы в genstrings. Например, если у вас есть быстрый единственный проект, вы можете просто запустить эту команду в корневом каталоге вашего проекта:

find . -name "*.swift" | xargs genstrings 

Это создаст Localizable.strings файл, то вы можете сравнить с существующей Localizable.strings файла с файлом сравните инструмент, например FileMerge. Чтобы это стало эффективным, вам может понадобиться сортировать ключи во всех файлах Localizable.strings, я знаю, что многие редакторы могут это сделать (SublimeText - один).

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

  1. разбор Localizable.strings, чтобы получить все ссылочные ключи
  2. синтаксического анализ данного локализованных strings файл, чтобы получить локализованный ключи
  3. вывода неиспользуемых ключи и те, которые не переведены

Надеются, что это помогает!