Not a Propaganda Machine

    koa-adam-locale

    2.4.0 • Public • Published

    koa-adam-locale

    Simple Multi Language Middleware for Koa.

    Installation

    $ npm install koa-adam-locale

    Example

    app.js:

    var Path = require('path');
    var View = require('koa-views')
    var KAL = require('koa-adam-locale');
    var koa = require('koa');
    var app = koa();
     
    /* i18n */
    app.use(KAL({
      path: Path.resolve(__dirname, 'i18n'),
      // reference: require('./i18n_ref'),
      cookieKey: 'current_lang',
      cookies: {
        maxAge: 365*24*60*60*1000,
        domain: 'hello.com',
        signed: false
      },
      default: 'en_US',
      supported: [{code:'en_US', lang:'English'},{code:'zh_CN', lang:'简体中文'}]
    }, app));
     
    /* templating */
    app.use(View(__dirname + '/views', {
      default: 'ejs'
    }));
     
    app.use(function * () {
      if(!this.path == '/') return;
      yield this.render('locale')
    })
     
    app.listen(process.argv[2])

    i18n/en_US.json

    {
      "hello": "hello",
      "world": "world"
    }

    views/locale.ejs

    <p><%= _i18n_.hello %>, <%= _i18n_.world %>.</p>
    <p>current:<%= _i18n_current_ %>.</p>
    <% for(var i in _i18n_supported_) { %>
    <a href='/set_locale?lang=<%= _i18n_supported_[i].code %>'>
        switch to <%= _i18n_supported_[i].lang %>
    </a>
    <% } %>

    Options

    path {String}

    The folder path of i18n files

    reference {Object}

    The reference of i18n Object, key of this reference should match the code, like 'zh_CN', 'en_US' (Case sensitive), and this parameter has a higher priority than path.

    supported {Array}

    The supported languages. default value: [{code:'en_US', lang:'English'},{code:'zh_CN', lang:'简体中文'}]

    Example:

    app.use(KAL({
      path: Path.resolve(__dirname, 'i18n'),
      // reference: require('./i18n_ref'),
      supported: [{code:'en_US', lang:'English'},{code:'zh_CN', lang:'简体中文'}]
    }, app));

    namespace {String}

    Custom template data params namespace. Default value is 'locals'

    • koa-views 2.x - ctx.locals
    • koa-views 3.x - ctx.state

    Example:

    // for koa-views 3.x
    app.use(KAL({
      path: Path.resolve(__dirname, 'i18n'),
      // reference: require('./i18n_ref'),
      supported: [{code:'en_US', lang:'English'},{code:'zh_CN', lang:'简体中文'}],
      namespace: 'state'
    }, app));

    cookieKey {String}

    cookies {Object}

    Store the selected language in the cookie. see koa cookie for more information.

    Example:

    app.use(KAL({
      path: Path.resolve(__dirname, 'i18n'),
      cookies: {
        domain: 'hello.com',
        maxAge: 365*24*60*60*1000
      }
    }, app));

    default {String}

    Default language

    Example:

    app.use(KAL({
      path: Path.resolve(__dirname, 'i18n'),
      // reference: require('./i18n_ref'),
      supported: [{code:'en_US', lang:'English'},{code:'zh_CN', lang:'简体中文'}],
      default: 'en_US'
    }, app));
     

    set_url {String}

    The url to switch current language. default value: /set_locale

    Example:

    app.use(KAL({
      path: Path.resolve(__dirname, 'i18n'),
      // reference: require('./i18n_ref'),
      set_url: '/set_locale'
    }, app));
     

    Then you can set current language by request url like this '/set_locale?lang=en_US'

    Local Params

    The following three params are set to ctx.namespace, default ctx.locals. For koa-views 3.x version, you can set namespace to ctx.state

    • this.locals._i18n_ {Object}
    • this.locals._i18n_current_ {String}
    • this.locals._i18n_supported_ {Array}

    static addLanguageHelper

    添加dust模板的helper,用于展示语言名称

    var dust = require('dustjs-helpers');
    KAL.addLanguageHelper(dust)
    

    在模板里使用@language

    {@language code="ru_RU" current="zh_CN" /} // 输出"俄语"
    
    {@language code="ru_RU" current="en_US" /} // 输出"Russian"
    
    {@language code="ru_RU" /} // 根据系统设置的自动判断语言
    

    Debug

    Set the DEBUG environment variable to koa-adam-locale when starting your server.

    $ DEBUG=koa-adam-locale

    License

    MIT

    Keywords

    none

    Install

    npm i koa-adam-locale

    DownloadsWeekly Downloads

    23

    Version

    2.4.0

    License

    MIT

    Last publish

    Collaborators

    • meikidd
    • pangxie.wdy