Home

Awesome

i18npm Build Status

To keep weekly release, translated locale files should be placed out of npm (and its repository as well), and also they should be easy to be referred to by npm.config. It means it is a possibility translated files come after the release like the following:

inside global module, like npm-lang-ja
└── locales
    └── ja
        └── 1.0.0.json
        └── 1.0.1.json

inside npm
└── locales/
    └── en
        └── 1.0.0.json
        └── 1.0.1.json
        └── 1.0.2.json <= new!

Usage

var path = require('path')
var pkg = require('./package.json')
var i18n = require('i18npm')({
  verison: pkg.version,
  path: path.join(__dirname, 'locales/ja'),
  fallbackPath: path.join(__dirname, 'locales/en')
})
var __ = i18n.__

console.log(__('Hello World!'))

Example

Use case in npm

lib/utils/i18n.js

var npm = require('../npm.js')
var configDefs = require('../config/defaults')

module.exports = require('i18npm')({
  version: npm.version,
  path: npm.config.get('locale-file-directory'),
  fallbackPath: configDefs.defaults['locale-file-directory']
})

lib/test.js

module.exports = test

var __ = require('./utils/i18n').__
var testCmd = require('./utils/lifecycle.js').cmd('test')

function test (args, cb) {
  testCmd(args, function (er) {
    if (!er) return cb()
    if (er.code === 'ELIFECYCLE') {
      return cb(__('Test failed.  See above for more details.'))
    }
    return cb(er)
  })
}

API

Inspired by y18n.

i18npm(config)

config:

i18npm.__(str, args, args...)

Return a localized string, %s will be replaced with args.

License

MIT