koa-i18next-detector

0.7.2 • Public • Published

koa-i18next-detector

NPM Version Coverage Status Build Status Downloads Dependency Status License

A i18next language detecting plugin for Koa 2.0 framework.

Install

npm i -S koa-i18next-detector

Usage

const i18next = require('i18next');
import koaI18nextDetector from 'koa-i18next-detector';
 
// add custom detector.
const lngDetector = new koaI18nextDetector();
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);
    }
);

License

MIT © lxzxl

Readme

Keywords

Package Sidebar

Install

npm i koa-i18next-detector

Weekly Downloads

6,557

Version

0.7.2

License

MIT

Unpacked Size

23.1 kB

Total Files

16

Last publish

Collaborators

  • lxz