Have ideas to improve npm?Join in the discussion! »

    polyglot

    0.5.0 • Public • Published

    Polyglot

    Polyglot is an internationalization library for express. It's template-agnostic, based on JSON files, and less than 200 lines of code. Compatible with express 3+.

    Usage

    Install with npm install polyglot:

    var i18n = require('polyglot')
    
    app = express()
    
    app.use(express.cookieParser())
    app.use(express.cookieSession())
    app.use(i18n())
    
    # register template locals
    app.locals(i18n.locals)
    

    Check the example app.

    Options

    app.use(i18n({
        debug   : false    // enable debug messages
      , default : 'en'     // default language
      , path    : '/lang'  // path for .json language files
    }))
    

    Language files

    Translation files are .json files containing the translated strings. The default directory is /lang. To add a new language, just create an empty .json file with the language code as it's name (i.e. de.json).

    See https://github.com/ricardobeat/node-polyglot/blob/master/example/lang/pt.json

    String definitions are automatically added to all available languages by adding the updateStrings middleware to your express config:

    app.configure('development', function(){
        app.use(i18n.updateStrings)
    })
    

    Templating / locals

    All the following examples are based on handlebars templates.

    Registering app.locals(i18n.locals) is simply a shortcut for:

    app.locals({
        __        : i18n.translate
      , _n        : i18n.plural
      , languages : i18n.languages
    })
    

    In addition to that, i18n() registers a middleware which sets req.lang and req.locale containing the user's settings.

    See the /example folder for an implementation using Handlebars helpers.

    i18n.translate

    Takes a string and returns a translation based on your current session preferences (req.session.lang)`.

     {{ __('hello') }}
     // en: 'hello'
     // pt: 'olá'
    

    i18n.plural

    Takes [n, singular, plural] or [n, zero, singular, plural] arguments. Using i18n.translate with the same arguments will use plural automatically.

    {{ __(1, "%s cat", "%s cats") }}
    // en: '1 cat'
    // pt: '1 gato'
    
    {{ __(0, "no cats", "%s cat", "%s cats") }}
    // en: 'no cats'
    // pt: 'nenhum gato'
    

    i18n.setLanguage

    To change the current language call i18n.setLanguage, passing the user's session object and desired language code:

    app.get('/lang/:lang', function(req, res){
        i18n.setLanguage(req.session, req.params.lang)
        res.redirect(req.headers.referer || '/')
    })
    

    Accessing http://yourapp/lang/de will set language to de, if it is defined in the i18n.languages object.

    Source code and tests

    Polyglot is written in coffeescript and distributed in js. Read the annotated source here.

    Run tests using mocha or npm test. You need coffee-script and mocha installed globally on your machine.

    Keywords

    none

    Install

    npm i polyglot

    DownloadsWeekly Downloads

    58

    Version

    0.5.0

    License

    none

    Last publish

    Collaborators

    • avatar