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!
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!'))
Use case in npm
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']
})
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)
})
}
Inspired by y18n.
config:
version
{String} Handle the exactly file name including the version numberpath
{String} Base directoryfallbackPath
{String} When there is no source file or no translated text, this base will be used
Return a localized string, %s
will be replaced with args.
MIT