How to install
- Add the translation package to the project:
npm i translation-adapter-ts
- In your build script, add all the directories containing .po files to PofileTransformer:
import {PofileTransformer} from "translation-adapter-ts/src/PofileTransformer";
let transformer = new PofileTransformer();
transformer.transformDirectory('i18n/ru_RU/LC_MESSAGES');
transformer.transformDirectory('i18n/zh_CN/LC_MESSAGES');
- In app initialization script, load the translations, and define the default language (language translation are coming from), and language selected by user:
import {Localizator} from "translation-adapter-ts/src/Localizator";
import {LanguageEnum} from "translation-adapter-ts/src/Enums/LanguageEnum";
import * as data from "translation-adapter-ts/test/translationFiles/test.json";
import {readFileSync} from "fs";
Localizator.addTranslation(LanguageEnum.RU, data);
Localizator.addTranslation(LanguageEnum.CN, readFileSync('/test/translationFiles/cn.json'));
Localizator.setDefaultLanguge(LanguageEnum.EN);
Localizator.setLanguage(LanguageEnum.RU);
If you use babel, with TS resolveJsonModule compiler directive, you may encounter an issue with data structure being exported as module with no default export. There's a workaround to fix that:
import * as data from "translation-adapter-ts/test/translationFiles/test.json";
Localizator.addTranslation(LanguageEnum.RU, data.default);
- Wrap translations into __() function:
import {__} from 'translation-adapter-ts/src/Main.ts';
console.log(__("Test string"));
console.log(__("Hello, %s", __("world")));
console.log(__("Hey %hello% %world%!"), {"%world%": __('world'), "hello": __("Hello")});
Using with web JS
import Localizator from 'translation-adapter-ts/build/Localizator';
Localizator.addTranslation('kr', {
"Hello": "여보세요"
});
Localizator.addTranslation('it', {
"Hello": "Ciao"
});
Localizator.addTranslation('cn', {
"Hello": "你好"
});
Localizator.setLanguage('cn');
export default function __ (args) {
return Localizator.localize(args);
}
console.log(__('Hello'));