Инструменты Xliff для PHP / Android

Мы планируем использовать Xliff в качестве общего формата для нашего кроссплатформенного приложения (PHP в серверной части, Android на мобильных устройствах). Эти файлы Xliff не будут иметь никакого «настоящего» исходного файла, из которого будут извлечены строки, а скорее будут создаваться вручную по мере разработки.

Естественно, Xliff необходимо преобразовать / прочитать целевой платформой. Для Android я подумал, что было бы лучше преобразовать исходные файлы Xliff в файлы ресурсов Android String, а для PHP я бы сделал то же самое, т.е. целевым выходом были бы необработанные массивы PHP или использовать что-то вроде Zend_Translate_Xliff.

Сейчас остаются нерешенными две вещи:

  1. Существуют ли какие-либо существующие инструменты, которые объединяют существующий файл Xliff с другим файлом Xliff, аналогично тому, что msgmerge делает для gettext? Обоснование здесь состоит в том, что если у нас есть X-переводы и к исходному языку добавляется новая строка, мы не хотим обновлять X-целевой файл перевода с этой новой строкой.

  2. Существуют ли существующие конвертеры / сценарии XSLT (в лучшем случае автоматические для CI), которые уже переводят из Xliff в Android XML?

Заранее спасибо.


person Thomas Keller    schedule 30.04.2014    source источник
comment
Я знаю, что это не по теме, но: Почему именно Xliff, а не gettext? Что не хватает gettext, что есть в Xliff? И, кроме того, почему вы выбрали формат на основе XML, если это будет мобильное приложение (XML толстый)? Мне просто любопытно. О, я забыл упомянуть, что использовал редактор перевода Swordfish, и все прошло нормально. Однако я не могу сравнивать его с другими инструментами. Также в статье Википедии о XLIFF есть дополнительная информация.   -  person Borislav Sabev    schedule 02.05.2014
comment
Я использую Xliff, потому что считаю, что его будет легче преобразовать в другие XML-форматы, такие как XML-формат ресурсов Android. Xliff стандартизирован и позволяет мне добавлять метаданные к переводам, например определение непереводимых или позиционных аргументов с помощью ‹g› или общих примечаний с помощью ‹note›, которые помогают переводчикам переводить строки.   -  person Thomas Keller    schedule 02.05.2014


Ответы (1)


Кажется, есть один проект, translate-toolkit, который в основном представляет собой набор утилит командной строки Python, который выполняет часть работы.

Слияние файлов xliff работает следующим образом:

 pretranslate -t translation.xml source.xml translation-merged.xml

хотя я не проверял, насколько хорошо он справляется с удаленными / измененными строками. По крайней мере, существующие trans-unit в translation.xml должны нести атрибут approved="yes", чтобы эти конкретные единицы не были помечены как «потребности-перевод» в translation-merged.xml.

Теоретически translate-toolkit также имеет некоторую поддержку PHP, но я наткнулся на те же проблемы , упомянутые здесь, т.е. не получил это работает.

person Thomas Keller    schedule 02.05.2014