This package is a collection of translations related tools for TAO.
$ npm i -D @oat-sa/tao-i18n-tools
Following tools are available to be used in this package:
The extract translation tool can be used to parse a given directory and extract all the strings to a POT file.
Following formats are supported by the extract translations tool at the moment:
.js
.svelte
The tool can either generate a new POT file from scratch or can add newly found strings to an existing POT file. It also skips adding the same string again in a POT file. So, the strings are not repeated if they are used in multiple places inside a project.
The tool also adds a comment above each key giving info about the component it was extracted from.
$ i18n:extract -s /absolute/path/to/src -d /absolute/path/to/template.POT
⚠️ Relative paths are not supported: please use absolute path for source and destination argument.
po2i18n
plugin transforms PO files to modules which are exporting dictionary and pluralization rules for given locale.
import po2i18n from '@oat-sa/tao-i18n-tools/src/rollup/po2i18n';
export default {
plugins: [
po2i18n({
exclude: ['**/node_modules/**']
}),
svelte(),
babel()
]
};
And then in application code we can just use an import:
import locale from 'path/to/po/file.po';
console.log(locale.default); // translations
console.log(locale.p11nRules); // pluralization rules
import path from 'path';
import i18n from '@oat-sa/tao-i18n-tools/src/rollup/i18n';
import po2i18n from '@oat-sa/tao-i18n-tools/src/rollup/po2i18n';
export default {
plugins: [
i18n({
exclude: ['**/node_modules/**'],
include: ['**/@oat-sa-private/**', '**/@oat-sa/**'],
output: path.join(srcDir, 'locales', 'messages.pot')
}),
po2i18n({
exclude: ['**/node_modules/**']
}),
// i18n plugin should be above any code transform plugin like babel or svelte
svelte(),
babel()
]
};