Ответ 1
Официальные документы Angular теперь обновляются для интернационализации (i18n) в https://angular.io/docs/ts/latest/cookbook/i18n.html, включая раздел специально для создание исходного файла перевода с помощью инструмента ng-xi18n.
Я использую инструмент командной строки (ng-xi18n
), чтобы извлечь строки i18n из приложения angular 2, которое я написал. Результатом этой команды является файл messages.xlf
. Исходя из фона .po
и не знакомого с .xlf
, я предположил, что этот файл эквивалентен файлу .pot
(исправьте меня, если я ошибаюсь).
Затем я предположил, что если я хочу перевести свое приложение, мне пришлось 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:
.de.xlf
.Спасибо за любую помощь заранее, я действительно ценю это
Официальные документы Angular теперь обновляются для интернационализации (i18n) в https://angular.io/docs/ts/latest/cookbook/i18n.html, включая раздел специально для создание исходного файла перевода с помощью инструмента ng-xi18n.
Я написал небольшой инструмент командной строки npm, называемый xliffmerge. В принципе он делает то же самое, что и Роланд Олденгарм с его задачами gulp, описанными в его статье в блоге. Это бесплатно, и вы можете посмотреть его на https://github.com/martinroob/ngx-i18nsupport#readme
Лучшее решение автоматизации документооборота, о котором я уже говорил, относится к Roland Oldengarm blog entry "Angular 2: Автоматизированный рабочий процесс i18n с использованием gulp" . Подводя итог, в нескольких десятках строк кода Gulp он создал инструментарий для решения некоторых проблем, с которыми вы столкнулись. В частности, он запускает ng-xi18n для извлечения сообщений; создает английский перевод с источниками, скопированными на целевые объекты; обновляет существующие переводы, добавляя новые транс-единицы, сохраняя существующие и удаляя отсутствующие; а затем предоставляет все xlf файлы в качестве TypeScript строковых констант. Затем эти последние строки можно импортировать для поставки bootstrapModule с опциями поставщик переводов.
Предостережение: я не использовал это точное решение (и код) самостоятельно, но мне удалось выставить сгенерированные строки xlf как TypeScript и использовать их в приложении так же, как описано. Что касается поддержания переводов, я использовал IntelliJ IDEA (WebStorm) функции сравнения файлов и Counterparts Lite (для Mac) для этого. Мои собственные усилия все еще находятся на ранних стадиях, но они работают изо всех сил для приложения, которое активно развивается.