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