- Support for the
VueLexer
has been dropped as it creates compatibility problems when trying to parse Vue3 code bases. You must remove any references toVueLexer
in your configuration files. For Vue3, you can simply useJavascriptLexer
instead. - Support for Node 16 is dropped. Node 18, 20 and 22 are supported.
- Support for Node 14 is dropped. Node 16, 18 and 20 are supported.
- The API to manage what default value is being used was getting too complicated. This version simplifies the API by deprecating the
skipDefaultValues
anduseKeysAsDefaultValues
options and adding avalue
argument when thedefaultValue
option is used as a function. Here are couple example of how it can be used:
To replace skipDefaultValue
, make the following change:
// 5.x.x
{
skipDefaultValues: true
}
// 6.x.x
{
defaultValue: function (locale, namespace, key, value) {
return '';
}
}
To replace useKeysAsDefaultValues
, make the following change:
// 5.x.x
{
useKeysAsDefaultValues: true
}
// 6.x.x
{
defaultValue: function (locale, namespace, key, value) {
return key;
}
}
And now you have complete control over the logic:
// 6.x.x
{
defaultValue: function (locale, namespace, key, value) {
if (locale === 'fr') {
return '';
}
return value || key;
}
}
- We dropped support for node versions that are not LTS. Only even numbered versions will be supported going forward. Support is for Node 14+
- This project is now a pure ESM project. You can read about it here to help you transition your project.
- The output format is now in JSON v4. To convert your existing translations to the new v4 format, have a look at i18next-v4-format-converter or this web tool.
reactNamespace
option is gone. To use jsx in js file, overwrite the lexer.
- Drop support for Node 6 and 8 (EOL)
- Jade is not being tested anymore. If this is something you need, please make a PR with a Lexer for it
regex
option was deprecated. If you need to support a custom file format, please make a PR with a Lexer for itignoreVariables
was deprecated. Keys that are not string litterals now emit a warningwriteOld
was renamedcreateOldLibraries
. It defaults totrue
.namespace
was renameddefaultNamespace
. It defaults totranslation
.prefix
was deprecated. Useoutput
suffix
was deprecated. Useoutput
filename
was deprecated. Useoutput
extension
was deprecated. Useoutput
- catalogs are no longer sorted by default. Set
sort
totrue
to enable this.
defaultValue
: replace empty keys with the given valueoutput
support for$NAMESPACE
and$LOCALE
variablesindentation
let you control the indentation of the catalogslineEnding
let you control the line ending of the catalogssort
let you enable sorting.
Instead of writing a single regex to match all use cases or to run many regexes on all files, the new version introduce the concept of "Lexer". Each file format has its own Lexer. It adds some code but reduces complexity a lot and improves maintainability.
i18next input:output
syntax was deprecated. Use the--output
optionrecursive
was deprecated. You can now pass a globdirectoryFilter
was deprecated. You can now pass a globfileFilter
was deprecated. You can now pass a glob
i18next src --recursive --fileFilter '*.hbs,*.js' --directoryFilter '!.git'
i18next 'src/**/*.{js,hbs}' '!.git'