Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

polyglot

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

polyglot

i18n module for express

  • 0.5.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
102
increased by2%
Maintainers
1
Weekly downloads
 
Created
Source

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

FAQs

Package last updated on 16 Feb 2013

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc