首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >i18next jquery帮助迁移到i18next jQueryv3.0.0

i18next jquery帮助迁移到i18next jQueryv3.0.0
EN

Stack Overflow用户
提问于 2016-05-25 21:15:32
回答 1查看 517关注 0票数 0

大家好,

我需要一点帮助,从i18next jQuery1.11.1迁移到3.0.0,这是我的设置。

代码语言:javascript
复制
<!-- Core JS files -->
<script type="text/javascript" src="../js/jquery-2.2.4.min.js"></script>
<script type="text/javascript" src="../js/i18next.min.js"></script> (v1.11.1)

$(function(){
    // i18next Configuration
    // -------------------------
    var namespaces = ["nav" ,"common" ];
    var options = {
            ns: {
                namespaces: namespaces,
                defaultNs: namespaces[0]
            },
            resGetPath: '../assets/locales/__ns__/__lng__.json',
            debug: false,
            load: 'unspecific',
            detectLngQS: 'lang',
            fallbackLng : 'en',
            cookieName: 'applang',
            //cookieExpirationTime : ,
            useLocalStorage: false,
            cookieDomain: '*.mydomain.com',
            useCookie: true,
            lngWhitelist: ['en','es', 'de', 'fr']
        };
    i18n.init(options ,function (err,t) {
        $('body').i18n(); // Init 18n

    });
})

当我想要加载额外的命名空间时,我会这样做

代码语言:javascript
复制
var namespaces = ["newFile"];
i18n.loadNamespaces(namespaces, function (err, t) {
        // init i18n
        $('body').i18n();
   .............. other stuff in here
})

但是,当我试图在jquery-i18next ( i18next -i18Next)保持相同逻辑的情况下使用最新的v3 (Uncaught : namespaces.forEach不是函数)时,下面是新的设置。

代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.js" ></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next/3.0.0/i18next.min.js" ></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-i18next/0.0.2/i18next-jquery.min.js" ></script>

i18next
  .use(i18nextXHRBackend)
  .init({
      lng: 'de',
      backend: {
          loadPath: '../assets/locales/{{lng}}/{{ns}}.json'
      }
    }, function(err, t) {
      jqueryI18next.init(i18next, $);
      $('.body').localize();

  });

  var namespaces = ["newFile"];
  i18n.loadNamespaces(namespaces, function (err, t) {
        // init i18n
        $('body').localize();
   .............. other stuff in here
})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-14 16:24:14

对任何有兴趣的人来说,这是我的解决方案。

代码语言:javascript
复制
<script type="text/javascript" src="../assets/js/core/libraries/jquery-2.2.4.min.js"></script>
<script type="text/javascript" src="../assets/js/plugins/internationalization/i18next.min-v3.3.1.js"></script>
<script type="text/javascript" src="../assets/js/plugins/internationalization/jquery-i18next.js"></script>
<script type="text/javascript" src="../assets/js/plugins/internationalization/i18nextXHRBackend.min.js"></script>
<script type="text/javascript" src="../assets/js/plugins/internationalization/i18nextBrowserLanguageDetector.min.js"></script>
<script type="text/javascript" src="../assets/js/plugins/internationalization/i18nextLocalStorageCache.min.js"></script>
<script type="text/javascript" src="../assets/js/plugins/internationalization/i18nextIntervalPluralPostProcessor.min.js"></script>

$(function(){
    // i18next Configuration
    // -------------------------
var namespaces = ["nameSpace1" ,"NameSpace2" ],
    cacheOptions = {
        // turn on or off
        enabled: true, // prefix for stored languages
        prefix: 'i18next_res_',
        expirationTime: 1*24*60*60*1000 // expiration
    },
    lngDetectionOption = {
        //order and from where user language should be detected
        order: ['querystring', 'cookie', 'localStorage', 'navigator', 'htmlTag'],
        //keys or params to lookup language from
        lookupQuerystring: 'lng',
        lookupCookie: 'i18next',
        lookupLocalStorage: 'i18nextLocalStorage',
        //cache user language on
        caches: ['localStorage','cookie'],
        // optional expire and domain for set cookie
        cookieMinutes: 365*24*60, // 1 year
        cookieDomain: 'myDomain',
        // optional htmlTag with lang attribute, the default is:
        htmlTag: document.documentElement
    },
    i18nextoptions = {
        compatibilityJSON: 'v2',
        debug: true,
        whitelist : ['en','es', 'de', 'fr'],
        ns: namespaces,
        load: 'unspecific',
        fallbackLng : 'en',
        detection: lngDetectionOption,
        backend: {loadPath: '../assets/locales/{{ns}}/{{lng}}.json'},
        //cache : cacheOptions
    };

i18next
    .use(i18nextBrowserLanguageDetector)
    .use(i18nextXHRBackend)
    .use(Cache)
    .use(i18nextIntervalPluralPostProcessor)
    .init(i18nextoptions, function (err, t) {
        var options = $().jqueryI18nextOptions;
        //init jquery-i18next
        jqueryI18next.init(i18next, $,options);

        $('body').i18n(); // Init 18n

    })
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37447755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档