Internationalization 胡须/hogan i18n,并考虑词序
找到了以下几个问题和答案: 等等 但非特别是考虑到词序的。我需要能够: 第一步。给定一个键->查找特定语言的句子 第二步。这句话可能包含{{var}},需要修改 由json值替换 第二步。只有普通胡须模板 第一步。单独使用几种技术就可以完成,但我更喜欢不涉及Mustach/Hogan引擎之外的任何专门代码的技术,当然还有i18n资源包。Hogan似乎支持这样的说法:从上面的urlInternationalization 胡须/hogan i18n,并考虑词序,internationalization,mustache,templating,hogan.js,Internationalization,Mustache,Templating,Hogan.js,找到了以下几个问题和答案: 等等 但非特别是考虑到词序的。我需要能够: 第一步。给定一个键->查找特定语言的句子 第二步。这句话可能包含{{var}},需要修改 由json值替换 第二步。只有普通胡须模板 第一步。单独使用几种技术就可以完成,但我更喜欢不涉及Mustach/Hogan引擎之外的任何专门代码的技术,当然还有i18n资源包。Hogan似乎支持这样的说法:从上面的url var template = "{{#i18n}}Name{{/i18n}}: {{username}}",
var template = "{{#i18n}}Name{{/i18n}}: {{username}}",
context = {
username: "Jean Luc",
i18n: function (i18nKey) {return translatedStrings[i18nKey];}
};
但是要结合1。二,。在本例中,我希望translatedStrings[i18nKey]返回一个可能也包含{{}}的字符串
有人知道这样做的优雅方式吗
理由:
通常,语言在词序等方面存在很大差异,这使得没有这种能力的模板非常复杂 最新版本的Hogan.js将在lambda返回的结果中处理Mustache标记。但是,对您问题中的代码的一个小改动是,lambda的结果应该是一个函数,以便修改字符串:
var translatedStrings = { name: "Nom {{rank}}" };
var template = "{{#i18n}}name{{/i18n}}: {{username}}",
context = {
username: "Jean Luc",
rank: 'Captain',
i18n: function() {
return function (i18nKey) {return translatedStrings[i18nKey];};
}
};
document.write(Hogan.compile(template).render(context)); // Nom Captain: Jean Luc
我创建了一个用最新版本演示这一点的应用程序。最新版本的Hogan.js将在lambda返回的结果中处理胡须标记。但是,对您问题中的代码的一个小改动是,lambda的结果应该是一个函数,以便修改字符串:
var translatedStrings = { name: "Nom {{rank}}" };
var template = "{{#i18n}}name{{/i18n}}: {{username}}",
context = {
username: "Jean Luc",
rank: 'Captain',
i18n: function() {
return function (i18nKey) {return translatedStrings[i18nKey];};
}
};
document.write(Hogan.compile(template).render(context)); // Nom Captain: Jean Luc
我创建了一个用最新版本演示这一点的