Workflow-процесс / рекомендации для XLIFF
я использую инструмент командной строки (ng-xi18n
), чтобы извлечь строки i18n из приложения angular 2, которое я написал. Вывод этой команды -. Исходящий от .po
фон, и быть не знакомым с .xlf
, я предположил, что этот файл является эквивалентом (поправьте меня, если я ошибаюсь).
я тогда предположил, что если я хочу перевести свое приложение, я должен был cp messages.xlf messages.de.xlf
иметь копию (messages.de.xlf
) файла шаблона (messages.xlf
), где я могу перевести каждое сообщение на немецкий (отсюда .de.xlf
).
после перевода некоторых фиктивных текстов и запуска приложения я увидел, что он работает, как ожидалось, поэтому я прекратил перевод и продолжил разработку приложения. Через некоторое время я добавил больше строк i18n и в конце концов подумал, что мне нужно обновить свой шаблон. И вот тут-то все и пошло наперекосяк. Я обновил шаблон messages.xlf
файл, и быстро задавался вопросом, как я могу обновить новые строки до моего уже переведенного не теряя своего прогресса.
когда я разрабатывал использование .po
файлы, это не было проблемой благодаря хорошим инструментам, таким как poEdit, но я не нашел ничего сопоставимого для .xlf
. Попробовав некоторые инструменты, я подумал, что лучшим выбором будет Lokalize, но я не нашел возможности объединить файл шаблона с уже переведенными (но устаревшими) файлами.
до сих пор это было скорее эссе, чем вопрос, так что вот быстрый резюме:
- - это процесс работы с
.xlf
файлы действительно сопоставимы с.po
Как я изначально думал (описано выше), или это совсем другое? - как я должен обновить мои уже переведенные файлы?
- каковы наилучшие методы работы с
.xlf
файлов? - что доказательство инструментов концепции для работы с
.xlf
?
заметками на полях истории болезни:
- в Руководство Lokalize не помогло вообще. Я вижу много функций, которые звучат многообещающе, как:
- "файл" > "Обновить файл из шаблона". Я не нашел ничего в руководстве, чтобы объяснить эту функцию. Если я нажму на это, ничего не произойдет.
- "синхронизация" > "открыть файл для синхронизации/слияния". Это, по-видимому, функция объединения двух похожих файлов (несколькими переводчиками), а не инструмент для обновления файла перевода из шаблона. Несмотря на то, что есть подсказка в Вкладка основной синхронизации Lokalize, уведомляя меня о "x непревзойденных записях", я просто не мог найти ничего, чтобы добавить эти непревзойденные записи в my .
- [обновление] оказывается, у меня были похожие проблемы, как и в этот вопрос. После понижения моей версии Lokalize до предложенной, многие проблемы (в том числе упомянутые в вопросе) исчезли. Однако теперь опция "Обновить файл из шаблона" выделена серым цветом, и я не знаю почему?.
- я также попробовал OmegaT, который вообще не работает на моей платформе (Ubuntu 16.04).
- [обновление] Virtaal отлично подходит для слияния новых строк из шаблона, но пользовательский интерфейс в целом очень плохо разработан...
- Googling не помог, так как каждый удар, похоже, связан с XCode или чем-то еще.
Спасибо за любую помощь заранее, я действительно ценю это
3 ответов
официальные угловые документы теперь обновляются для интернационализации (i18n) в https://angular.io/docs/ts/latest/cookbook/i18n.html включая раздел специально для создать исходный файл перевод с НГ-xi18n инструмент.
Я написал небольшой инструмент командной строки npm под названием xliffmerge. В принципе он делает то же самое, что Роланд Олденгарм делает со своими задачами gulp, описанными в его статье в блоге. Это бесплатно, и вы можете посмотреть на него в https://github.com/martinroob/ngx-i18nsupport#readme
лучшее решение для автоматизации рабочего процесса, которое я видел, описано до сих пор, - это запись в блоге Roland Oldengarm "Angular 2: автоматизированный рабочий процесс i18n с помощью gulp". Подводя итог, в нескольких десятках строк кода Gulp он создал инструмент для решения некоторых проблем, с которыми вы столкнулись. В частности, он запускает ng-xi18n для извлечения сообщений; создает английский перевод с источниками, скопированными в целевые объекты; обновляет существующие переводы, добавляя новые транс-единицы, сохраняя существующие и удаление отсутствующих; а затем предоставляет все xlf-файлы в виде строковых констант TypeScript. Эти последние строки затем могут быть импортированы для предоставления bootstrapModule с его поставщик перевод параметры.
предостережение: я сам не использовал это точное решение (и код), но я смог разоблачить сгенерированные xlf как строки TypeScript и использовать их в приложении так же, как он описал. Что касается перевода, то я использовалIntelliJ IDEA (WebStorm) функции сравнения файлов и Аналоги Lite (для Mac) для этого. Мои собственные усилия все еще находятся на ранних стадиях, но работают от начала до конца для приложения, которое находится в активной разработке.