Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tsvetomir/xlf-translate

Populate XLIFF (.XLF) files with existing translations in Angular 2 apps
https://github.com/tsvetomir/xlf-translate

angular angular-2 i18n language-files translation xlf

Last synced: about 1 month ago
JSON representation

Populate XLIFF (.XLF) files with existing translations in Angular 2 apps

Awesome Lists containing this project

README

        

[![Build Status](https://travis-ci.org/tsvetomir/xlf-translate.svg?branch=master)](https://travis-ci.org/tsvetomir/xlf-translate)
[![npm version](https://badge.fury.io/js/xlf-translate.svg)](https://badge.fury.io/js/xlf-translate)

# xlf-translate

Populates translations in XLIFF (.xlf) message files. Specifically developed for [Angular 2 i18n](https://angular.io/docs/ts/latest/cookbook/i18n.html) - enabled apps, but might work for others as well.

**Check out my blog post on [Making Sense of Angular Internationalization (i18n)](https://medium.com/@t_tsonev/making-sense-of-angular-internationalization-i18n-e7b26fb9c587)**

## Description

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

```html
Hello!
```

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

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

Hello!

A hello world message for the localized component
localized.component.hello

```

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:

```yaml
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

* [Sample usage in an i18n Angular app](https://github.com/tsvetomir/angular-cli-i18n-sample)
* [Angular 2 - Internationalization (i18n)](https://angular.io/docs/ts/latest/cookbook/i18n.html)
* [Deploying an i18n Angular app with angular-cli](https://medium.com/@feloy/deploying-an-i18n-angular-app-with-angular-cli-fc788f17e358#.2qlq8lfad)