我正在用nodejs开发一个项目,我想添加一个语言翻译功能。
在互联网上查看时,我看到了 2 个看起来不错的选项(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 变量发送到客户端,以便在模板 View 中使用它,或者是否必须创建另一个变量。
问候
最佳答案
问题是在对象初始化期间未使用defaultLocale 选项。您可以查看here这个库是如何做到的。只是从 locales 数组中取出第一个 el 。因此,如果您将“en”语言放在第一位,它将正常工作。
关于angularjs - Nodejs : Using i18n-2 Client side or Server side or both,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33278260/