2016-09-06 3 views
10

Я использую инструмент командной строки (ng-xi18n), чтобы извлечь строки i18n из углового приложения 2, которое я написал. Результатом этой команды является файл messages.xlf. Исходя из фона .po и не знакомого с .xlf, я предположил, что этот файл является эквивалентом файла .pot (исправьте меня, если я ошибаюсь).Рабочий процесс/лучшие практики для XLIFF

Я тогда предположил, что если я хочу, чтобы перевести мое приложение, я должен был cp messages.xlf messages.de.xlf иметь копию (messages.de.xlf) файла шаблона (messages.xlf), где я могу перевести каждое сообщение на немецком языке (отсюда .de.xlf).

После перевода некоторых фиктивных текстов и запуска приложения я увидел, что он работал так, как ожидалось, поэтому я прекратил перевод и продолжил разработку приложения. Через некоторое время я добавил несколько строк i18n и в конце концов подумал, что мне нужно обновить свой шаблон. И это то, где вещи едва ли можно обслуживать. Я обновил файл шаблона messages.xlf и быстро задавался вопросом, как я могу обновить новые строки до моего уже переведенного файла messages.de.xlf, не теряя своего прогресса.

Когда я развивался с использованием файлов .po, это не было проблемой благодаря хорошим инструментам, таким как poEdit, но я не нашел ничего сопоставимого для .xlf. Попробовав некоторые инструменты, я подумал, что лучшим выбором будет Lokalize, но я не нашел возможности объединить файл шаблона с уже переведенными (но устаревшими) файлами.


До сих пор это было скорее эссе, чем вопрос, так вот краткое резюме:

  • ли рабочий процесс борьбы с .xlf файлов действительно сопоставимы с .po, как я первоначально думал (описано выше), или это совсем другое?
  • Как я могу обновить мои уже переведенные файлы?
  • Каковы наилучшие методы работы с файлами .xlf?
  • Каковы доказательства концептуальных инструментов для работы с .xlf?

Sidenotes:

  • Пособие Lokalize не помогает вообще. Я вижу много функций, которые кажутся многообещающими, например:
    • «Файл»> «Обновить файл из шаблона». Я не нашел ничего в руководстве, чтобы объяснить эту функцию. Если я нажму на это, ничего не произойдет.
    • «Синхронизация»> «Открыть файл для синхронизации/слияния». Кажется, это функция объединить два похожих файла (несколькими переводчиками), а не инструмент для обновления файла перевода из шаблона. Несмотря на то, что на вкладке первичной синхронизации Lokalize есть всплывающая подсказка, уведомляющая меня о «непрочитанных записях», я просто не мог найти ничего, чтобы добавить эти несопоставимые записи в мой файл .de.xlf.
    • [Обновить] Оказалось, у меня были подобные проблемы, как в файле this question. После понижения моей версии Lokalize до предложенного, многие проблемы (в том числе упомянутые в вопросе) исчезли. Однако теперь опция «Обновить файл из шаблона» выделена серым цветом, и я не знаю, почему.
  • Я также пробовал OmegaT, который вообще не работает на моей платформе (Ubuntu 16.04).
  • [Update] Virtaal отлично работает для объединения новых строк из шаблона, но интерфейс в целом очень плохо проработан ...
  • Googling не помогло, так как каждый удар, кажется, связано с XCode или что-то ,

Спасибо за любую помощь заранее, я действительно ценю это

+1

Относительно 'ng-xi18n': Это не является полезным дополнением к вопросу или ответом на этот вопрос, поэтому я просто добавлю его в Комментарии. Как оказалось, в инструменте 'ng-xi18n' cli есть опция (которая неправильно работает, поскольку я пишу это), чтобы генерировать файлы' .xlf' для любого языка. Таким образом, нет необходимости в файле шаблона. См. [Здесь] (https://github.com/angular/angular/issues/9104#issuecomment-245337147) для получения дополнительной информации. Просто хотел добавить это, если кто-то найдет этот ответ и, в частности, нуждается в решении для 'ng-xi18n' – CharlyDelta

+0

Что касается обновления' ng-xi18n': сегодня была открыта документация MR для i18n: https://github.com/angular /angular.io/pull/2309 – CharlyDelta

+0

Можете ли вы дать больше информации о том, что произошло с OmegaT? Он требует Java, но должен работать с 16.04. –

ответ

-2

Официальные документы Угловое теперь обновляются для интернационализации (i18n) в https://angular.io/docs/ts/latest/cookbook/i18n.html включая раздел специально для creating a translation source file with the ng-xi18n tool.

+0

Удивительный, спасибо! – CharlyDelta

+5

На самом деле это не объясняет, как обновлять xlf-файлы, не теряя существующих текстов перевода, не так ли? – not2savvy

+0

Хотя это принятый ответ, ссылки на документы не отвечают на вопрос. – Anton

1

Лучшее решение для автоматизации документооборота, о котором я уже говорил, относится к записи blog от Roland Oldengarm "Angular 2: Automated i18n workflow using gulp". Подводя итог, в нескольких десятках строк кода Gulp он создал инструментарий для решения некоторых проблем, с которыми вы столкнулись. В частности, он запускает ng-xi18n для извлечения сообщений; создает английский перевод с источниками, скопированными на целевые объекты; обновляет существующие переводы, добавляя новые транс-единицы, сохраняя существующие и удаляя отсутствующие; а затем предоставляет все xlf-файлы как строковые константы TypeScript. Эти последние строки могут быть импортированы, чтобы предоставить bootstrapModule параметры translation provider.

Предостережение: Я не использовал это точное решение (и код) самостоятельно, но мне удалось выставить сгенерированные xlf как строки типа TypeScript и использовать их в приложении способом, подобным тому, что он описал. Что касается поддержания переводов, я использовал для сравнения IntelliJ IDEA (WebStorm) варианты сравнения файлов и Counterparts Lite (для Mac). Мои собственные усилия по-прежнему находятся на ранних стадиях, но работают в полном объеме для приложения, которое активно развивается.

+0

Прежде всего, спасибо за ваш ответ. В настоящее время у меня нет времени, чтобы проверить, насколько хорошо он работает, но как только я приду к нему, я рассмотрю вопрос об этом принятом ответе, если он работает как обещано :) Звучит действительно хорошо в теории – CharlyDelta

+0

Несомненно. Я обновил свой ответ, чтобы уточнить, какие идеи из блога я успешно использовал. – Will

+0

Большое спасибо и, пожалуйста, извините за задержку – CharlyDelta

7

Я написал небольшой инструмент командной строки npm, называемый xliffmerge. В принципе, он делает то же самое, что и Роланд Олденгарм с его задачами глотки, описанными в его статье в блоге. Это бесплатно, и вы можете взглянуть на него на https://github.com/martinroob/ngx-i18nsupport#readme

+0

Если бы вы могли предоставить информацию об установке и краткой информации здесь, в дополнение к ссылке, пользователям было бы проще, так как им не нужно было бы переходить по ссылке для самой тривиальной информации. – kabirbaidhya

+0

xliffmerge - фантастический инструмент и предоставляет сервис, отсутствующий в угловом ци. – luvaas