2013-08-16 78 views
2

translation.json文件中/locales/en/i18next顯示鍵,而不是值

{ 
    "app": { 
     "name": "Example App" 
    } 
} 

html,我有:

<a href="/" data-i18n="app.name"> 

js

$(document).ready(function() { 

    var language_complete = navigator.language.split("-"); 
    var language = (language_complete[0]); 

    console.log('language', language); 

    $.i18n.init({ 
     lng: language, 
     fallbackLng: false, 
     debug: false 
    }, function() { 
     $('a').i18n(); 
    }); 
}); 

它顯示app.name代替Example App。我在代碼中錯過了什麼?由於

+0

你是否包含i18next的jQuery版本? :) – AndreM96

+1

同樣的問題在這裏,你是如何解決它?謝謝.. – delkant

回答

0

你必須設置useLocalStorageuseDataAttrOptions

$.i18n.init({useLocalStorage: true , useDataAttrOptions:true, ....}); 
0

爲i18next V2中,後端不再提供開箱即用(see the migration guide)的,所以你需要在init塊中定義backend配置:

backend: { 
    loadPath: '/locales/{{lng}}/{{ns}}.json' 
}, 

如果你不這樣做,您的資源將不會被加載,並且轉換值將回退到其各自的密鑰(see the source code)。

0

在js中,這是因爲$(document).ready不會等待外部內容加載。您需要使用$(window).on('load',function(){...})