【问题标题】:use i18n-node in server-side express application在服务器端 express 应用程序中使用 i18n-node
【发布时间】:2014-06-22 17:24:44
【问题描述】:

我不知道应该如何在我的应用程序中使用 i18n-node 模块。

在视图中,对于静态文本,这很简单,但效果很好,但是...

这是我的问题:

有时我必须设置一些错误消息或其他内容,例如:

req.flash('message', __('Unknown user %s', login));

然后我必须将此消息发送到我的视图,例如:

res.render('myview', {message: req.flash('message')});

但首先,我的消息"Unknown user %s"只会设置在默认语言json文件中,然后即使我把"Unknown user %s": "Something in the client language"放在客户端语言json文件中,它仍然会显示"Unknown user myUserLogin"

有人可以分享一个很好的工作示例吗?

编辑:因为翻译后的字符串中有一个变量,所以我不能这样做:

res.render('myview', {message: __(req.flash('message'))});

因为它会在客户端语言 json 文件中设置"Unknown user myUserLogin",而不是"Unknown user %s"...

【问题讨论】:

  • 当您提到客户端语言文件的输出为"Uknown user myUserLogin" 时,我有点困惑。我将假设您说输出仍然是默认语言而不是客户端的语言。当您覆盖语言环境时会发生什么?即:__({phrase: 'Unknown user {{user}}, locale: 'fr'}, { user: 'Marcus' });

标签: javascript node.js express internationalization i18n-node


【解决方案1】:

我知道这个问题有点老了,但我遇到了同样的问题并找到了解决方案。

由于您使用req 对象中的flash 方法,您还应该使用同一对象中可用的__ 方法:

req.flash('message', req.__('Unknown user %s', login));

这样,它将使用请求的当前语言环境进行翻译。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-29
    • 2019-08-03
    • 2017-10-13
    • 1970-01-01
    • 2017-12-31
    • 2015-05-15
    • 2015-02-20
    • 1970-01-01
    相关资源
    最近更新 更多