summaryrefslogtreecommitdiffstats
path: root/lib/utils/i18n.js
diff options
context:
space:
mode:
authorSamy Pessé <samypesse@gmail.com>2015-04-01 22:17:12 +0200
committerSamy Pessé <samypesse@gmail.com>2015-04-01 22:17:12 +0200
commit4b206855621b71263d5521851b5b7fbfa7d28ac7 (patch)
treea0a724426c31f163c5ab5e4f7977f84528f1c016 /lib/utils/i18n.js
parentfff7c5cc3ac9191765e0957fecf994e813923225 (diff)
downloadgitbook-4b206855621b71263d5521851b5b7fbfa7d28ac7.zip
gitbook-4b206855621b71263d5521851b5b7fbfa7d28ac7.tar.gz
gitbook-4b206855621b71263d5521851b5b7fbfa7d28ac7.tar.bz2
Use i18n node module for template translation
Diffstat (limited to 'lib/utils/i18n.js')
-rw-r--r--lib/utils/i18n.js67
1 files changed, 37 insertions, 30 deletions
diff --git a/lib/utils/i18n.js b/lib/utils/i18n.js
index 449fccb..d504e9a 100644
--- a/lib/utils/i18n.js
+++ b/lib/utils/i18n.js
@@ -2,32 +2,19 @@ var _ = require("lodash");
var path = require("path");
var fs = require("fs");
-var I18N_PATH = path.resolve(__dirname, "../../theme/i18n/")
+var i18n = require("i18n");
-var getLocales = _.memoize(function() {
- var locales = fs.readdirSync(I18N_PATH);
- return _.chain(locales)
- .map(function(local) {
- local = path.basename(local, ".json");
- return [local, _.extend({
- direction: "ltr"
- }, require(path.join(I18N_PATH, local)), {
- id: local
- })];
- })
- .object()
- .value();
+var I18N_PATH = path.resolve(__dirname, "../../theme/i18n/")
+var DEFAULT_LANGUAGE = "en";
+var LOCALES = _.map(fs.readdirSync(I18N_PATH), function(lang) {
+ return path.basename(lang, ".json");
});
-var getLanguages = function() {
- return _.keys(getLocales());
-};
-
-var getByLanguage = function(lang) {
- lang = normalizeLanguage(lang);
- var locales = getLocales();
- return locales[lang];
-};
+i18n.configure({
+ locales: LOCALES,
+ directory: I18N_PATH,
+ defaultLocale: DEFAULT_LANGUAGE
+});
var compareLocales = function(lang, locale) {
var langMain = _.first(lang.split("-"));
@@ -43,12 +30,9 @@ var compareLocales = function(lang, locale) {
};
var normalizeLanguage = _.memoize(function(lang) {
- var locales = getLocales();
- var language = _.chain(locales)
+ var language = _.chain(LOCALES)
.values()
.map(function(locale) {
- locale = locale.id;
-
return {
locale: locale,
score: compareLocales(lang, locale)
@@ -64,9 +48,32 @@ var normalizeLanguage = _.memoize(function(lang) {
return language || lang;
});
+var translate = function(locale, phrase) {
+ var args = Array.prototype.slice.call(arguments, 2);
+
+ return i18n.__.apply({}, [{
+ locale: locale,
+ phrase: phrase
+ }].concat(args));
+};
+
+var getCatalog = function(locale) {
+ locale = normalizeLanguage(locale);
+ return i18n.getCatalog(locale);
+};
+
+var getLocales = function() {
+ return LOCALES;
+};
+
+var hasLocale = function(locale) {
+ return _.contains(LOCALES, locale);
+}
+
module.exports = {
+ __: translate,
+ normalizeLanguage: normalizeLanguage,
+ getCatalog: getCatalog,
getLocales: getLocales,
- getLanguages: getLanguages,
- getByLanguage: getByLanguage,
- normalizeLanguage: normalizeLanguage
+ hasLocale: hasLocale
};