爲了國際化目的,我使用Vue.js和vue-i18n插件。它接受lang
和locales
參數,後者是屬性名稱和關聯值列表(object literals
)。因此,引用一個object literals
列表,或者直接在locales
選項,或者存儲在本地變量正常工作,如下面的例子:
var locales = {
"en": {
"menu": {
"about": "about",
"news": "news",
"contact": "contact"
}
},
"fr": {
"menu": {
"about": "à propos",
"news": "actualités",
"contact": "contacter"
}
}
}
Vue.use(VueI18n, {
lang: 'fr',
locales: locales
});
請注意,儘管格式(雙引號所有通過列表的方式),以上不是json array
,而是object literals
列表與string literals
for the name of the properties。
現在,我一直在努力的是依靠一個Json文件,而不是直接在我的腳本中聲明object literals
列表。舉例來說,我已經試過一個Ajax請求,比如這個:
Vue.use(VueI18n, {
lang: 'fr',
locales: $.ajax({
url: "../resources/i18n/locales.json",
dataType: "json",
type: "GET",
success: function(data) {
console.log(data);
}
})
});
的url
串在locales.json
文件具有完全相同的數據和格式如上指出,與這裏面寫的,唯一的區別方括號。
雖然我對這種方法並沒有太大的成功,但在我看來,這並沒有太大的意義,因爲data
似乎被正確解析。這是我在控制檯中得到的結果:
Array[1]
0: Object
en: Object
menu: Object
about: "about"
contact: "contact"
news: "news"
fr: Object
menu: Object
about: "à propos"
contact: "contacter"
news: "actualités"
我在想我在做什麼錯?
感謝提醒我需要等待請求成功並且回調可用。我確實得到了幾個'[Vue warn]:現在評估表達式$ t(「news.message2」)'警告(表達式明顯改變)時出錯。數據似乎不可用,是否需要遍歷它? – pierrebonbon