node package manager
Loosely couple your services. Use Orgs to version and reuse your code. Create a free org »

xlf-translate

Build Status npm version

xlf-translate

Populates translations in XLIFF (.xlf) message files. Specifically developed for Angular 2 i18n - enabled apps, but might work for others as well.

Check out my blog post on Making Sense of Angular Internationalization (i18n)

Description

Normally, you'd localize an attribute using the following syntax:

<span i18n="A hello world message for the localized component">Hello!</span>

This utility makes use of the optional meaning tag to associate the message with an unique key.

<span i18n="localized.component.hello|A hello world message for the localized component">Hello!</span>

The key will be persisted in the messages file as a "meaning":

<trans-unit id="cb5fabf68b14f52c0d7cbc2b90393f8897310ba7" datatype="html">
  <source>Hello!</source>
  <target/>
  <note priority="1" from="description">A hello world message for the localized component</note>
  <note priority="1" from="meaning">localized.component.hello</note>
</trans-unit>

This utility will look up the keys in the supplied language file to provide the target translation.

Language Files

The language files contain translations corresponding to the keys in the description. For example, the localized.component.hello key and its translation are represented as:

localized:
    component:
        hello: Bonjour!

Installation

npm install -g xlf-translate

Usage

xlf-translate --lang-file sample/lang/fr.yml sample/messages.fr.xlf

This will populate all empty target elements in the messages.xlf file with matching translations. Non-empty target elements will be skipped to avoid overwriting user translations.

The messages file will be updated in place.

You can also force overwriting all translations, regardless if empty or not:

xlf-translate --force --lang-file sample/lang/fr.yml sample/messages.fr.xlf

See Also