如何本地化 node.js 应用程序,每个语言环境混合静态和动态本地化文本的不同词定位?
How to localize a node.js app with different word positioning per locale mixing static & dynamic localized text?
我有一个 node.js express 4 网络应用程序,我需要翻译并以多种语言显示。我正在学习在车把中使用 i18n-node 包。
一些本地化文本数据来自数据库(动态数据),一些来自使用 i18n-node 的静态文本 json 文件。作为参考点,我将使用以下句子:
"Hey there {Londoners}! how about going to {Paris} on your next spring vacation starting on {March 29}, meet some {parisians} and learn how to cook {parisian} desserts?"
我的问题是:你如何处理各种语言的不同语法,这些语法会改变静态词和动态注入词的词序?
一个好的本地化库应该支持这一点,通常你应该能够configure/pass几个东西:键、值、变量等等(复数、上下文等)。
键在所有不同的语言文件中应该是一致的,但值可以是任何你想要的。
例子
语言文件:
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
希望这对您有所帮助。
我有一个 node.js express 4 网络应用程序,我需要翻译并以多种语言显示。我正在学习在车把中使用 i18n-node 包。 一些本地化文本数据来自数据库(动态数据),一些来自使用 i18n-node 的静态文本 json 文件。作为参考点,我将使用以下句子: "Hey there {Londoners}! how about going to {Paris} on your next spring vacation starting on {March 29}, meet some {parisians} and learn how to cook {parisian} desserts?" 我的问题是:你如何处理各种语言的不同语法,这些语法会改变静态词和动态注入词的词序?
一个好的本地化库应该支持这一点,通常你应该能够configure/pass几个东西:键、值、变量等等(复数、上下文等)。
键在所有不同的语言文件中应该是一致的,但值可以是任何你想要的。
例子
语言文件:
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
希望这对您有所帮助。