Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在i18next中如何使用多个名称空间?_Javascript_Namespaces_I18next - Fatal编程技术网

Javascript 在i18next中如何使用多个名称空间?

Javascript 在i18next中如何使用多个名称空间?,javascript,namespaces,i18next,Javascript,Namespaces,I18next,我刚刚开始i18next,我想为我的项目中的每个模块创建翻译文件。使用名称空间似乎是正确的方法。该项目可以使用多个视图创建页面布局,因此我需要能够同时转换来自多个名称空间的字符串 我创建了一个有两个名称空间的简单示例,但我只能让i18next为一个名称空间转换字符串。如果使用defaultNs:namespaces[0]则会转换数字,使用defaultNs:namespaces[1]会转换颜色,而使用defaultNs:namespaces则不会转换任何内容。但我不知道如何让这两个名称空间进行转

我刚刚开始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>

$(文档).ready(函数(){
var language=“en”;
变量名称空间=[“数字”,“颜色”];
变量配置={
液化天然气:语言,
撤退:“恩”,
resGetPath:“名称空间/_;ns/__ns _-_lng __.json”,
ns:{
名称空间:名称空间,
defaultNs:名称空间[0]
},
调试:正确
};
i18n.init(配置,函数onInitComplete(){
$(“.xl8”).i18n();
});
});
你好,i18n!
  • 1
  • 2
  • 3
    • r
    • g
    • b

    我在github上发布了同样的问题,并从jamuhl收到了以下工作答案:

    如果资源不在默认命名空间上,请使用:

  • b
  • -->名称空间:键
    不确定对于您描述的用例来说,这是否有点不规范,但是(假设您在任何时候只希望有两个名称空间处于活动状态&键不冲突),您可以这样做:

    fallbackNS: 'colors',
    ns: {
        namespaces: ['colors', 'numbers'],
        defaultNs: 'numbers'
    }
    
    不过,这并不是为您的用例而设计的-它更适合于您希望根据另一个因素以不同方式显示某些翻译的情况-例如,为业务用户显示“Employee”或为学校用户显示“Student”的应用程序-但主要使用相同的默认设置

    fallbackNS: 'colors',
    ns: {
        namespaces: ['colors', 'numbers'],
        defaultNs: 'numbers'
    }