The i18n library for nestjs. It makes working with languages in your nestjs project easy. Everything is made to be highly configurable. You can write and plug-in your own language resolvers or loaders.
Features
nestjs-i18n comes with a bunch of tools to help add multiple language support to your project.
- Type safety
π (instructions) - Variable formatting (instructions)
- Fallback languages (instructions)
- Live reloading
π - Plurals support (instructions)
- GraphQL support (instructions)
- gRPC support (instructions)
- DTO validation (instructions)
- View engine support (hbs or pug or ejs)
- Custom resolvers
- Custom loaders
- Custom formatters
Getting started
To get started follow the quickstart, or take a look at the docs.
License
nestjs-i18n
is MIT licensed.
Breaking changes:
-
from V10.0.0 on we removed the
I18nRequestScopeService
. This because we now haveasync_hooks
support. This allows you to get the currentI18nContext
by doingI18nContext.current()
. -
from V9.0.0 on we renamed the
parser
property toloader
. Thetranslate
function no longer returns a promiseπ . A lot of new features and new docs, see nestjs-i18n.com. -
from V8.0.0 on we changed the internal
18n-middleware
for aninterceptor
this way we can provide theExecutionContext
so thatnestjs-i18n
works on different protocols as well, such as gRPC and WebSockets. This contains one breaking change. It only applies to your code if you've made a customresolver
. To resolve this breaking change take a look at this example. Instead of providing thereq
in theresolve
method, change this to take theExecutionContext
as argument. -
from V6.0.0 on we implemented the
I18nParser
, by using this we can easily support different formats other than JSON. To migrate to this change look at the quickstart. There are some changes in the declaration of theI18nModule
. Note: thetranslate
function returns aPromise<string>
. So you need to call it usingawait i18n.translate('HELLO')
; -
from V4.0.0 on we changed the signature of the
translate
function, thelanguage
is now optional, if nolanguage
is given it'll fallback to thefallbackLanguage
. -
from V3.0.0 on we load translations based on their directory name instead of file name. Change your translations files to the structure found in the quickstart.