angularjs - Nodejs : Using i18n-2 Client side or Server side or both

标签 angularjs node.js internationalization locale

我正在用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/

相关文章:

php - 不同地区的锂电路线

CakePHP i18n,翻译行为,在条件下使用 find() 时出现未知列错误

java - 如何将字段名称传递给属性文件中的全局消息

javascript - 下划线 JSON 中的 js groupby 数组

javascript - 为什么我在这个基本 Controller 中得到 'Error: $injector:modulerr Module Error'?

javascript - 变量更改后 Angular.js 更新范围

node.js - Visual Studio Team Services Azure 部署(无法对指定目录执行操作 ("Delete File")

html - 如何使用 express 发送带有 css 的 html 文件作为对连接客户端的响应

angularjs - 生命周期 Hook this.$postLink 给出类型错误

javascript - 为什么我的关联未被识别并导致 SequelizeEagerLoadingError?