0

我有一个 node.js express 4 网络应用程序,我需要翻译并以多种语言显示。我正在学习在车把中使用 i18n-node 包。一些本地化文本数据来自 db(动态数据),一些来自使用 i18n-node 的静态文本 json 文件。作为参考,我将使用以下句子:“嘿,{Londoners}!从 {3 月 29} 日开始的下一个春假去 {Paris} 怎么样,认识一些 {parisians} 并学习如何烹饪 {parisian } 甜点?” 我的问题是:您如何处理各种语言中的不同语法,这些语法会改变静态单词和动态注入单词的单词顺序?

4

1 回答 1

3

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

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

例子

语言文件:

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

希望这可以帮助。

于 2015-01-17T13:52:58.137 回答