Formatting
nestjs-i18n
uses string-format for formatting by default.
First define arguments in your translations
src/i18n/en/test.json
{
"HELLO": "Hello {username}",
}
To provide nestjs-i18n
with the right arguments pass them down while doing the translation
i18n.t('test.HELLO', {args: { username: 'Toon' }})
// => Hello Toon
tip
To define your own formatting function change the formatter
. Read the instructions here.
Array arguments
You can also use an array of arguments
src/i18n/en/test.json
{
"HELLO": "Hello {0.username}, This library is {1.opinion}",
}
i18n.t('test.HELLO', {args: [{ username: 'Toon' }, {opinion: 'Terrible :\')'}]})
// => Hello Toon, This library is Terrible :')
Custom formatter
To use a custom formatter define the formatter
option. This option takes a function with a template
and ...args
.
src/app.module.ts
import { Module } from '@nestjs/common';
import * as path from 'path';
import { I18nJsonLoader, I18nModule } from 'nestjs-i18n';
@Module({
imports: [
I18nModule.forRoot({
fallbackLanguage: 'en',
formatter: (template: string, ...args: any[]) => template,
loaderOptions: {
path: path.join(__dirname, '/i18n/'),
watch: true,
}
}),
],
controllers: [],
})
export class AppModule {}