Name: i18n
Owner: Lad
Description: i18n wrapper and Koa middleware for Lad
Created: 2017-09-10 03:38:49.0
Updated: 2018-05-21 18:06:43.0
Pushed: 2018-05-21 18:06:45.0
Homepage: https://lad.js.org
Size: 200
Language: JavaScript
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
i18n wrapper and Koa middleware for Lad
npm:
install @ladjs/i18n
yarn:
add @ladjs/i18n
t I18N = require('@ladjs/i18n');
t phrases = { 'HELLO': 'Hello there!' };
t i18n = new I18N({ phrases });
..
use(i18n.middleware);
use(i18n.redirect);
.. routes go here ...
listen();
Returns translation for phrase key
with the given locale
.
This middleware uses custom locale detection (in order of priority):
/de
or /de/
then it's a de
locale - as long as de
is a supported locale)"locale"
cookie value (or whatever the cookie
option is defined as)Accept-Language
headerIt also exposes the following:
ctx.pathWithoutLocale
- the ctx.path
without the locale in it (this is used by koa-meta)ctx.req
- with all of i18n
API methods (e.g. ctx.req.t
, ctx.req.tn
, …)ctx.locale
- set to the value of ctx.req.locale
(the current user's locale)ctx.state
- with all of i18n
API methods (e.g. ctx.req.t
, ctx.req.tn
, …)ctx.state.l
- a shorthand method that accepts a path and returns a localized path (e.g. ctx.state.l('/contact')
will output /en/contact
if the locale is “en”)ctx.state.availableLanguages
(Array) - which is useful for adding a dropdown to select from an available languagectx.state.currentLanguage
(String) - the current locale's language in native language using country-language's getLanguage
method.ctx.translate
(Function) - a helper function for calling i18n.api.t
to translate a given phrase (same as i18n.translate
except it throws a ctx.throw
error using Boom)If the given locale was not available then it will redirect the user to the detected (or default/fallback) locale.
Inspired by node's language support.
Redirects user with permanent 302
redirect to their detected locale if a valid language was not found for them.
It also sets the cookie locale
for future requests to their detected locale.
This also stores the last_locale
for a user via ctx.state.user.save()
.
We use i18n options per https://github.com/mashpie/i18n-node#list-of-all-configuration-options
Default options are as follows and can be overridden:
t i18n = new I18N({
rases: {},
gger: console,
rectory: resolve('locales'),
cales: ['en', 'es', 'zh'],
okie: 'locale',
dent: ' ',
faultLocale: 'en',
`process.env.I18N_SYNC_FILES`
ncFiles: true,
`process.env.I18N_AUTO_RELOAD`
toReload: false,
`process.env.I18N_UPDATE_FILES`
dateFiles: true,
i: {
__: 't',
__n: 'tn',
__l: 'tl',
__h: 'th',
__mf: 'tmf'
gister: i18n.api
Note that we automatically bind logDebugFn
, logWarnFn
, and logErrorFn
for i18n options to logger.debug
, logger.warn
, and logger.error
respectively.
For a list of all available locales see i18n-locales.
| Name | Website | | ————– | ————————– | | Nick Baugh | http://niftylettuce.com/ |