Localization 在i18next中插值时未传递变量yes

Localization 在i18next中插值时未传递变量yes,localization,i18next,Localization,I18next,</head> <body> <div id="add"> <div data-i18n="key">Hello</div> </div> <script> i18next.t('key', {yes: 'this', no: 'great'}); </script> <script> i18next

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>

你好
i18next.t('key',{yes:'this',no:'great'});
I18下一步
i18next.use(window.i18nextBrowserLanguageDetector)
i18next.use(window.i18nextXHRBackend)
.init({
是的,
t名称:“t”,
handleName:“本地化”,
选择器TR:'data-i18n',
targetAttr:'i18n目标',
选项属性:“i18n选项”,
UseOptions属性:正确,
parseDefaultValueFromContent:true,
对,,
撤退:错,
插值:{
“逃避价值”:对,
“前缀”:“{{”,
“后缀”:“}}”,
“格式分隔符”:“,”,
“unescape前缀”:“-”,
“nestingPrefix”:“$t(”,
“nestingSuffix”:”
},
检测:{
订单:['querystring','cookie','navigator','htmlTag'],
lookupCookie:“i18next”,
lookupLocalStorage:'i18nextLng',
缓存:['cookie'],
},
“后端”:{
“加载路径”:“/locales/{{lng}}/{{ns}}.json”
}
},函数(err,t){
init(i18next,$);
$('#add').localize();
});

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>
Json文件

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>
{ “键”:“{yes}}是{{no}”

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>
}

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>
控制台结果

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>
i18next::interpolator:未传递用于插值{{yes}}的变量yes是{{no}

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>
i18next::interpolator:未传递用于插值的变量no为{{no}

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>
这个代码有什么错误吗

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>
Thanx

调用
i18next.t('key',{yes:'this',no:'great'})在初始化完成之前

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>
你应该:

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>
``` .init({

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>
    }, function(err, t) {
        jqueryI18next.init(i18next, $);
        // add vars here!!!
        $('#add').localize({yes: 'this', no: 'great'});
    });
```

</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>

或者使用data-i18n-option属性:

@jamuhi,谢谢你的时间,我有另一个查询我尝试用两种不同的语言翻译,比如西班牙语或汉语我有两个单独的Json文件。然后“yes”或“no”有两个不同的值,比如西班牙语{yes:'这是西班牙语',no:'很棒的西班牙语'}或汉语{是:'这是中文',不是:'伟大的中文'}。但当我将浏览器语言更改为中文时,Ch.json文件调用但仍然显示“这是西班牙语,伟大的西班牙语”我应该更改“{是}}”还是“{否}”名称为中文json文件吗?@AdityaTomar对于这种情况,您可能想尝试嵌套:@jamuhi,再次tnx,请查看此URL:
</head>

<body>
    <div id="add">
        <div data-i18n="key">Hello</div>
    </div>
    <script>
        i18next.t('key', {yes: 'this', no: 'great'});
    </script>
    <script>
        i18next
        i18next.use(window.i18nextBrowserLanguageDetector)
        i18next.use(window.i18nextXHRBackend)

        .init({
            debug: true,
            tName: 't',
            handleName: 'localize',
            selectorAttr: 'data-i18n',
            targetAttr: 'i18n-target',
            optionsAttr: 'i18n-options',
            useOptionsAttr: true,
            parseDefaultValueFromContent: true,
            initImmediate: true,
            fallbackLng: false,
            interpolation: {
                "escapeValue": true,
                "prefix": "{{",
                "suffix": "}}",
                "formatSeparator": ",",
                "unescapePrefix": "-",
                "nestingPrefix": "$t(",
                "nestingSuffix": ")"
            },

            detection: {
                order: ['querystring', 'cookie', 'navigator', 'htmlTag'],
                lookupCookie: 'i18next',
                lookupLocalStorage: 'i18nextLng',
                caches: ['cookie'],
            },

            "backend": {
                "loadPath": "/locales/{{lng}}/{{ns}}.json"
            }

        }, function(err, t) {
            jqueryI18next.init(i18next, $);
            $('#add').localize();
        });

    </script>

</body>