babel-plugin-transform-i18n v2.2.1
babel-plugin-transform-i18n
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#!"