我有一个 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/