Nodejs:使用i18n-2客户端或服务器端或两者

时间:2015-10-22 09:57:25

标签: angularjs node.js internationalization locale

我正在开发nodejs中的proyect,我想为语言翻译添加一个功能。

在互联网上查看我看到了两个似乎没问题的选项(i18n和i18n-2)。

我已在服务器端添加了正确的代码以进行配置。

在express.js

var i18n = require('i18n-2');


i18n.expressBind(app, {
// setup some locales - other locales default to vi silently
locales: ['es', 'en'],
// set the default locale
defaultLocale: 'en',
// set the cookie name
cookieName: 'locale',
extension: ".json"
});

app.use(function(req, res, next) {
req.i18n.setLocaleFromQuery();
req.i18n.setLocaleFromCookie();
next();
});

因此,如果在同一个文件中我将此代码放在下面,那么由于defaultLocale,它会以英语打印,但它会以西班牙语打印

var i18n2 = new (require('i18n-2'))({
locales: ['es', 'en'],
// set the default locale
defaultLocale: 'en',
// set the cookie name
cookieName: 'locale',
extension: ".json"
});
console.log("Mensaje de i18n");
console.log( i18n2.__("hola") );

除了这个问题之外,我想知道如何将这个i18n变量发送到客户端,以便在模板视图中使用它,或者如果我必须创建另一个变量。

问候

1 个答案:

答案 0 :(得分:0)

问题是在对象初始化期间不使用defaultLocale选项。你可以查看here这个lib是如何做到的。从locales数组中取出第一个el。因此,如果您将'en'语言放在第1位,它将正常工作。