Странные скрытые символы в экспортированном файле XLIFF

Всякий раз, когда я пытаюсь выполнить 'Экспорт для интернационализации', экспортируемый файл содержит странный скрытый символ, что делает его неразборчивым для редакторов XLIFF. Проблема, похоже, была в исходных файлах .string, в эти файлы каким-то образом был вставлен странный символ. С тех пор я удалил странный символ, но всякий раз, когда я экспортирую, он все равно пробирается в файл xliff. Я попытался очистить и перестроить проект, перезапустить Xcode... ничего из этого не работает.

Использует ли Xcode как-то кешированную версию «плохого» файла .strings, содержащего плохой символ?

Использование Xcode

Если я попробую Editor > Export For Localization, я получу:

/usr/bin/xmllint exited with status 1

Сообщение Xcode после экспорта для локализации


Использование терминала

Когда я запускаю его из терминала, вот так:

xcodebuild -exportLocalizations -localizationPath /Users/Kymer/Downloads/Wolf -project Wolf.xcodeproj -exportLanguage fr

Я получаю следующие ошибки:

parser error : attributes construct error
parser error : Couldn't find end of Start Tag trans-unit
parser error : PCDATA invalid Char value 19
parser error : PCDATA invalid Char value 19
parser error : Opening and ending tag mismatch
parser error : invalid character in attribute value
parser error : attributes construct error
parser error : Couldn't find end of Start Tag
parser error : PCDATA invalid Char value

/Uxcodebuild: error: /usr/bin/xmllint exited with status 1

В обоих случаях экспортированный файл xliff содержит странный скрытый символ при проверке с помощью Sublime Text:

Скриншот

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


person Kymer    schedule 22.02.2016    source источник


Ответы (1)


Я обнаружил проблему: при экспорте в файл XLIFF Xcode не просматривает ваши файлы .string, все они генерируются из самого проекта (т.е. просматриваются все вызовы NSLocalizedString и ваши раскадровки). Что имеет смысл. Я нашел странный скрытый символ в одном из моих файлов кода. Удаление его из исходного файла устранило проблему экспорта.

Самый простой рабочий процесс XLIFF

Я также упомяну это для справки в будущем: самый простой способ добавить новый язык в ваш проект — это сначала использовать командную строку:

cd в свой проект и запустите:

xcodebuild -exportLocalizations -localizationPath <path>  -project <projectname>.xcodeproj -exportLanguage <language code>

Это создаст новый файл XLIFF и правильно установит целевой язык в файле (исходный язык будет вашим базовым языком). Теперь переводчик может легко добавлять все необходимые переводы. После этого вы можете импортировать переведенный файл XLIFF обратно в Xcode (выберите цель и Editor > Import localizations). Затем Xcode сгенерирует все необходимые файлы .string.

Обновление существующего языка. Если вы добавляете новые элементы пользовательского интерфейса и хотите обновить существующий язык локализации, вы можете просто экспортировать существующую локализацию (выберите цель и Editor > Export for localization). Этот файл XLIFF будет содержать все предыдущие переводы вместе с новыми строками. Переводчик просто должен заполнить «пустые» строки. Нет необходимости прикасаться к файлам .string самостоятельно, потому что управлять этим вручную очень сложно (особенно с сумасшедшими идентификаторами раскадровки).

person Kymer    schedule 08.03.2016