Utility for building and compiling I18N bundles.
The project uses tools from FormatJS, if your project uses other tools it may not work for you.
Install globally:
npm install @nutgaard/i18n-tools -g
Install in project:
npm install @nutgaard/i18n-tools --save-dev
Usage: i18n-tool [options] [command]
Utility for building and compiling I18N bundles
Options:
-h, --help display help for command
Commands:
build [options] <srcDir> <outDir> Bundles files in <srcDir> into i18n files
watch [options] <srcDir> <outDir> Starts watching and rebundling files in <srcDir> into i18n files
validate <srcDir> Validate that every locale contains the same set of keys
fix <srcDir> Attempts to fix validation issues by creating missing files
help [command] display help for command
Usage: i18n-tool build [options] <srcDir> <outDir>
Bundles files in <srcDir> into i18n files
Arguments:
srcDir source folder of your i18n files
outDir output folder for your i18n bundles
Options:
-f, --format <format> Output format (choices: "script", "json", "jsonlut", "formatjs", default: "formatjs")
--typescript Output script files with typescript (default: false)
--strict Run validation before bundling (default: false)
--ast Compile generated bundles (only availble with formatjs) (default: false)
--lut Generate look-up-table (only availble with formatjs) (default: false)
-t, --timeZone <timezone> Inject timezone into date/time skeletons
-h, --help display help for command
Examples:
- Bundle files into a json file following the formatjs-format
i18n-tool build example/messages example/compiled --ast --lut --typescript
script generates bundle_[locale].js
const texts = {
'group-by-page/title': 'The folder structure is preserved in the look-up-table.',
};
export default texts;
Use --typescript
to change the file extension
json generates bundle_[locale].json
{
"group-by-page/title": "The folder structure is preserved in the look-up-table."
}
jsonlut generates bundle_[locale].json
{
"group-by-page": {
"title": "The folder structure is preserved in the look-up-table."
}
}
formatjs generates bundle_[locale].json
{
"group-by-page/title": {
"defaultMessage": "The folder structure is preserved in the look-up-table."
}
}
Usage: i18n-tool validate [options] <srcDir>
Validate that every locale contains the same set of keys
Arguments:
srcDir source folder of your i18n files
Options:
-h, --help display help for command
Usage: i18n-tool fix [options] <srcDir>
Attempts to fix validation issues by creating missing files
Arguments:
srcDir source folder of your i18n files
Options:
-h, --help display help for command