babel-plugin-transform-i18n

A Babel transform plugin to replace strings with their translations.

Usage no npm install needed!

<script type="module">
  import babelPluginTransformI18n from 'https://cdn.skypack.dev/babel-plugin-transform-i18n';
</script>

README

babel-plugin-transform-i18n Build Status codecov npm

This plugin is not maintained, you should take a look at this one: https://github.com/vinhlh/tagged-translations

A Babel transform plugin to replace strings with their translations.

This plugin is a fork of vimeo/babel-plugin-transform-i18n

Example

.babelrc

{
    "plugins": [
        [
            "transform-i18n",
            {
                "translations": {
                    "Hello": "Bonjour",
                    "Hello, #1#!": "Bonjour, #1#!"
                }
            }
        ]
    ]
}

In

const name = 'Brad';
const hello = t`Hello`;
const helloWithName = t`Hello, ${name}!`;

Out

const name = 'Brad';
const hello = 'Bonjour';
const helloWithName = 'Bonjour, ' + name + '!';

Installation

yarn add babel-plugin-transform-i18n

or with npm

npm install babel-plugin-transform-i18n --save

Usage

Via .babelrc

{
    "plugins": [
        [
            "transform-i18n",
            {
                "translations": "path/to/translations.json",
                "preToken": "#",
                "postToken": "#",
                "tagName": "t"
            }
        ]
    ]
}

Via Node API

require('babel-core').transform('code', {
    plugins: [
        [
            'transform-i18n',
            {
                tagName: 't',
                translations: 'path/to/translations.json',
            },
        ],
    ],
});

Options

There are two options available, both are optional:

preToken and postToken

String to identify the token. Default is # for both. It permit to include variables in translation: "Hello, #1#!": "Bonjour, #1#!".

translations

A mapping of the strings passed to the translation function to their translated versions. It can also be the path to json file. If no translations is passed, calls to the translation function will be replaced with the original string.

tagName

The name of the tag function that wraps the strings. Defaults to t.

Notes

Order of tokens in translation

You can change the order in translation:

"#1#, #2#!": "#2# #1#!"

But the order in the first string should always be from smaller to higher. This is not correct and will reverse the order:

"#2#, #1#!": "#2# #1#!"