javascript - 如何混合静态和动态本地化文本来本地化每个语言环境具有不同单词定位的 Node.js 应用程序?

标签 javascript node.js web-applications localization i18n-node

我有一个 Node.js Express 4 Web 应用程序,我需要翻译并以多种语言显示。我正在学习在 Handlebars 中使用 i18n-node 包。 一些本地化文本数据来自数据库(动态数据),一些来自使用 i18n-node 的静态文本 json 文件。作为引用点,我将使用以下句子: “嘿,{伦敦人}!您下一个春假(从 {3 月 29 日}开始)去{巴黎},认识一些{巴黎人}并学习如何 cooking {巴黎}甜点怎么样?” 我的问题是:如何处理各种语言中会改变静态单词和动态注入(inject)单词的单词顺序的不同语法?

最佳答案

一个好的本地化库应该支持这一点,通常您应该能够配置/传递几个内容:键、值、变量等等(复数、上下文等)。

所有不同语言文件中的键应该一致,但值可以是您想要的任何值。

示例

语言文件:

en.js:
  {"Hello {name}, you have {points} points": "Hello {name}, you have {points} points"}
  {"HELLO_MSG": "Hello {name}, you have {points} points"}

other-lang.js:
  {"Hello {name}, you have {points} points": "{points}, xxx, {name} yyyy yyy"}
  {"HELLO_MSG": "{points}, xxx, {name} yyyy yyy"}

然后,在您的代码中您应该执行以下操作:

en:
var hello1 = translate("Hello {name}, you have {points} points", {name: "John", points: 3}; // Hello John, you have 3 points
var hello2 = translate("HELLO_MSG", {name: "John", points: 3}; // Hello John, you have 3 points

other-lang:
var hello1 = translate("Hello {name}, you have {points} points", {name: "John", points: 3}; // 3, xxx, John yyyy yyy
var hello2 = translate("HELLO_MSG", {name: "John", points: 3}; // 3, xxx, John yyyy yyy

您可以在这里看到一个很好的示例:http://i18next.com/pages/doc_features.html#interpolation

希望这有帮助。

关于javascript - 如何混合静态和动态本地化文本来本地化每个语言环境具有不同单词定位的 Node.js 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27999543/

相关文章:

javascript - lodash _.partition 方法解释

企业 Web 应用程序中的 JavaFX - 经典网页的良好替代品?

javascript - 如何通过将 Web 文件从浏览器拖放到 Electron 应用程序来导入

javascript - ES6 类 - 从点击事件调用方法

javascript - Node js 中未定义错误的模型

javascript - 推送后数组仍然为空

node.js - 如何将此目录包含在 $PATH 环境变量中?

html - 什么是单页应用程序(SPA)?

javascript - 如何在 Android WebView 的 Web 应用程序端使用 backpress 事件?

JavaScript 函数参数与对象方法