如何在 i18next 中使用多个命名空间
How do you use multiple namespaces in i18next?
我刚刚开始i18next,我想为项目中的每个模块创建翻译文件。似乎使用命名空间是正确的方法。该项目可以使用多个视图创建页面布局,因此我需要能够同时翻译来自多个命名空间的字符串。
我创建了一个具有两个命名空间的简单示例,但我只能让 i18next 来翻译一个命名空间的字符串。如果我使用defaultNs: namespaces[0]
那么数字会被翻译,defaultNs: namespaces[1]
颜色被翻译,defaultNs: namespaces
什么都不会被翻译。但是我不知道如何让两个命名空间都进行翻译。
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="i18next.js"></script>
<script>
$(document).ready(function(){
var language = "en";
var namespaces = [ "numbers", "colors" ];
var config = {
lng: language,
fallbackLng: "en",
resGetPath: "namespaces/__ns__/__ns__-__lng__.json",
ns: {
namespaces: namespaces,
defaultNs: namespaces[0]
},
debug: true
};
i18n.init( config, function onInitComplete() {
$(".xl8").i18n();
});
});
</script>
</head>
<body>
<h1>hello, i18n!</h1>
<ol>
<li class="xl8" data-i18n="numbers.one">1</li>
<li class="xl8" data-i18n="numbers.two">2</li>
<li class="xl8" data-i18n="numbers.three">3</li>
</ol>
<ul>
<li class="xl8" data-i18n="colors.red">r</li>
<li class="xl8" data-i18n="colors.green">g</li>
<li class="xl8" data-i18n="colors.blue">b</li>
</ul>
</body>
</html>
我在github上发布了同样的问题,并从jamuhl收到了以下工作答案:
如果资源不在默认命名空间上,请使用:
<li class="xl8" data-i18n="colors:colors.blue">b</li> --> namespace:key
不确定这对于您描述的用例是否有点黑客化,但是(假设您只想同时激活两个命名空间并且键不冲突)您可以这样做:
fallbackNS: 'colors',
ns: {
namespaces: ['colors', 'numbers'],
defaultNs: 'numbers'
}
不过,这并不是真正为您的用例设计的 - 它更适合您希望根据另一个因素以不同方式显示某些翻译的情况 - 例如,为业务用户显示"员工"或为学校用户显示"学生"的应用程序 - 但主要使用相同的默认值集。
相关文章:
- 在javascript中使用命名空间
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- javascript中的命名空间,IDE中支持代码完成/内容辅助's
- 如何使用javascript命名空间
- js命名空间和变量范围
- html,js-如何限制元素"范围“-命名空间
- 转换自的JavaScript命名空间
- 命名空间与自调用函数
- 什么's当前命名空间/类中JavaScript子命名空间/类的语法
- 无法加载Ace.js编辑器模式和主题(命名空间项目&AMD require.js&grunt
- jQuery命名空间和使用“;这个“;
- 在Firebug控制台中监视javascript命名空间变量
- jQuery事件命名空间是否可以包含破折号
- 用自定义javascript全局命名空间替换窗口
- 如何在Typescript中导出具有其他名称的命名空间
- 从html文件中的脚本标记调用非全局命名空间函数
- 正在测量全局命名空间的污染
- 谷歌闭包命名空间冲突
- 如何在 i18next 中使用多个命名空间
- (jade)html标签;每个“;在i18next命名空间中