koa-i18next-middleware

1.1.12 • Public • Published

koa-i18next-middleware

NPM Version Coverage Status Build Status Downloads Dependency Status License

An i18next middleware for koa2 framework.

Install

npm i -S koa-i18next-middleware

Usage

Notice: this plugin requires koa2 with async enabled in Node.js.

const i18next = require('i18next');
const i18m = require('koa-i18next-middleware');
 
// add custom detector.
const lngDetector = new i18m.LanguageDetector();
lngDetector.addDetector({
    name: 'mySessionDetector',
 
    lookup(ctx, options) {
        let found;
        if (options.lookupSession && ctx && ctx.sessions) {
            found = ctx.sessions[options.lookupMySession];
        }
        return found;
    },
 
    cacheUserLanguage(ctx, lng, options = {}) {
        if (options.lookupMySession && ctx && ctx.session) {
            ctx.session[options.lookupMySession] = lng;
        }
    }
});
 
i18next.use(lngDetector).init(
    {
        fallbackLng: 'en',
        preload: ['en', 'es'],
        resources: {
            en: {
                translation: {
                    key: 'hello world'
                }
            },
            es: {
                translation: {
                    key: 'es hello world es'
                }
            }
        },
        detection: {
            order: [
                'querystring',
                'path',
                /*'cookie', 'header',*/ 'session',
                'mySessionDetector'
            ],
 
            lookupQuerystring: 'lng',
 
            lookupParam: 'lng', // for route like: 'path1/:lng/result'
            lookupFromPathIndex: 0,
 
            // currently using ctx.cookies
            lookupCookie: 'i18next',
            // cookieExpirationDate: new Date(), // default: +1 year
            // cookieDomain: '', // default: current domain.
 
            // currently using ctx.session
            lookupSession: 'lng',
 
            // other options
            lookupMySession: 'lang',
 
            // cache user language
            caches: ['cookie', 'mySessionDetector']
        }
    },
    (err, t) => {
        // initialized and ready to go!
        const hw = i18next.t('key'); // hw = 'hello world'
        console.log(hw);
    }
);
 
app.use(
    i18m.getHandler(i18next, {
        locals: 'locals',
        ignoreRoutes: ['/no-lng-route']
    })
);

License

MIT © steven MIT © i18next-express-middleware

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.1.12
    1,208
    • latest

Version History

Package Sidebar

Install

npm i koa-i18next-middleware

Weekly Downloads

1,219

Version

1.1.12

License

MIT

Unpacked Size

15.8 kB

Total Files

16

Last publish

Collaborators

  • lxz