Localization
Complex web applications are often multi-language. Entropy has many built-in localization features so you can easly support multiple languages without any additional libraries.
Setting App Locale
You can set the default (fallback) app locale in src/main.ts file:
src/main.ts
const server = await createServer({
config: {
locales: {
default: 'en',
},
},
// ...
});
Translations
Translations are stored in JSON files inside /locales directory. It does not exist by default, but you can create it if you're using localization features.
For example, if your app supports Polish language with English as default, just create a new locales/pl.json file with translations. To get translated contents, use the translate request method and pass the default message to it:
locales/pl.json
{
"Hello World": "Witaj Świecie"
}
src/posts/post.controller.ts
// Locale is automatically detected from request...
const message = await request.translate('Hello World');
Pluralization
You can also use pluralization in your translations. Just pass the quantity as the second argument:
src/posts/post.controller.ts
// Automatically determine whether to translate singular or plural word
const message = await request.translate('New user', users.length);
In translation file you can define pluralization rules by using | delimiter and passing an array of translations. The first translation is used for singular, the second for plural:
locales/pl.json
{
"New user|New users": ["Nowy użytkownik", "Nowi użytkownicy"]
}
View Translations
You can also display translated text directly in view templates using $translate function (or its double-underscore __ shorthand):
views/home.html
<h1>{{ $translate('Hello World') }}</h1>
<section>
<p>{{ __('New post', posts.length) }}</p>
</section>