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) для этого. Мои собственные усилия все еще находятся на ранних стадиях, но работают от начала до конца для приложения, которое находится в активной разработке.