提交 45a45621 编写于 作者: S Samy Pessé

Start adding i18n

上级 fbb6c526
module.exports = function defaultTheme(output) {
var _ = require('lodash');
var path = require('path');
var fs = require('fs');
var i18n = require('i18n');
// Root folder for i18n locales
var I18N_PATH = path.resolve(__dirname, '../_i18n/');
// Default language is english
var DEFAULT_LANGUAGE = 'en';
// List all locales
var LOCALES = _.map(fs.readdirSync(I18N_PATH), function(lang) {
return path.basename(lang, '.json');
});
// Configure i18n
i18n.configure({
locales: LOCALES,
directory: I18N_PATH,
defaultLocale: DEFAULT_LANGUAGE,
updateFiles: false
});
function compareLocales(lang, locale) {
var langMain = _.first(lang.split('-'));
var langSecond = _.last(lang.split('-'));
var localeMain = _.first(locale.split('-'));
var localeSecond = _.last(locale.split('-'));
if (locale == lang) return 100;
if (localeMain == langMain) return 50;
if (localeSecond == langSecond) return 20;
return 0;
}
var normalizeLanguage = _.memoize(function(lang) {
var language = _.chain(LOCALES)
.values()
.map(function(locale) {
return {
locale: locale,
score: compareLocales(lang, locale)
};
})
.filter(function(lang) {
return lang.score > 0;
})
.sortBy('score')
.pluck('locale')
.last()
.value();
return language || lang;
});
function translate(locale, phrase) {
var args = Array.prototype.slice.call(arguments, 2);
return i18n.__.apply({}, [{
locale: locale,
phrase: phrase
}].concat(args));
}
function getCatalog(locale) {
locale = normalizeLanguage(locale);
return i18n.getCatalog(locale);
}
function getLocales() {
return LOCALES;
}
function hasLocale(locale) {
return _.contains(LOCALES, locale);
}
module.exports = {
filters: {
}
};
......@@ -5,6 +5,9 @@
"engines": {
"gitbook": ">=3.0.0"
},
"dependencies": {
"i18n": "0.7.0"
},
"devDependencies": {
"less": "2.6.0",
"less-plugin-clean-css": "1.5.1",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册