Install the i18next library with a backend loader, typically i18next-xhr-backend
Install NPM package
npm install i18next i18next-xhr-backend
Main.ts
configure i18n loader with assets folder
import i18n from'i18next';import Backend from'i18next-http-backend';i18n.use(Backend).init({// the translations (tip move them in a JSON file and import them or even better, manage them via a UI// backend: {// loadPath: 'assets/locales/{{lng}}/{{ns}}.json',// }, resources: { en: { translation: localeEn }, fr: { translation: localeFr }, }, lng:'en', fallbackLng:'en', debug:false, interpolation: { escapeValue:false } });
Class sample
You need to add a translation key via the property headerKey to each column definition, for example: headerKey: 'TITLE'
Note
For the Select Filter, you will use labelKey instead of label. Anytime a translation key will come in play, we will add the word key to the end (hence headerKey, labelKey, more to come...)
Instead of defining a custom formatter over and over, you could also use the built-in Formatters.translate. However for the formatter to work, you need to provide the i18n Service instance, you can do so using the params properties which is made to pass any type of data, however you need to pass it with this structure: params: { i18n: i18next } .
constcolumnDefinitions= [ { id:'title', name:'Title', field:'title', headerKey:'TITLE', formatter:Formatters.translate, params: { i18n: i18next } // provide the `i18n instance through the params.i18n property }];
Passing i18n in the Grid Options for Formatter
The best and quick way to pass the i18n service is to pass it through the generic params grid option. However make sure that you use the following structure: params: { i18n: i18next } .
constgridOptions= { enableTranslate:true, params: { i18n: i18next } // provide the `i18n instance through the params.i18n property};
Locales
The final step is of course the actual translations. There's multiple ways to copy them to your assets folder. See below for a few ways:
Manually copy the translation keys/values
Manually copy the JSON files to your assets folder
Or modify your package.json and add a script to copy the JSON files to your assets folder
run the script once with npm run copy:i18n and you should now have the JSON files in your src/assets folder
visit copyfiles site on how to use it in your npm script
If you want to manually re-create the translation in your own files, the list of translations that you will need are displayed in the asset i18n translation folder (from that file, you need all translations shown before the 'BILLING', the next few ones are for the demo page only).