vue-i18n多語言文件歸類的兩種方法


1.按語言類型歸類

流行的做法是按照語言對文件進行歸類,目錄結構類似於:

--lang
----en
------test.json
--------"abc": "abc"
----zh
------test.json
--------"abc": "測試"

這樣處理有個問題,就是沒出添加一項,都要同時切換到兩個文件中進行添加,開發起來很麻煩,

2.按功能模塊分類

還有個方法就是按照功能模塊分類,一個文件中包含了這個功能下的所有語言,目錄結構類型下面:

--lang
----test.js
------en
--------"abc": "abc"
------zh
--------"abc": "測試"

這樣的話,開發過程中,只需要關注一個文件,就能完成所有國際化設置.

3.兩種方式對比

按照語言進行分類的好處,就是加載時會根據本地語言環境加載不同的語言包,不用一次性加載所有的,按照模塊分類的好處就是,開發容易了,編寫國際化項的時候,只關注一個文件就行了。

開發流行的還是按照語言分類,然后輔助一多語言工具來管理;

 

4.兩種方式的實現方法

4.1按語言包實現代碼

4.1.1目錄結構

i18n
--en
----index.js
----common.json
--zh_CN
----index.js
----common.json

4.1.2main.js

import Vue from 'vue'
import App from './App.vue'
import i18n from './i18n'

Vue.config.productionTip = false

new Vue({
  i18n,
  render: h => h(App),
}).$mount('#app')
View Code

4.1.3 i18n/index.js

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import Cookie from 'vue-cookie'
import ZH from './zh_CN'
import EN from './en'

Vue.use(Cookie)
Vue.use(VueI18n)

const loc = Cookie.get('lang')

const i18n = new VueI18n({
  locale: loc || 'zh',
  messages: {
    en: EN,
    zh: ZH
  }
})

export default i18n
View Code

4.1.4 en/index.js

import common from './common.json'

export default {
  common
}
View Code

4.1.5 en/common.json

{
  "webName": "User Management System",
  "translations": "中文"
}
View Code

4.1.6 zh_cn/index.js

同 4.1.4 en/index.js

4.1.7 zh_cn/common.json

{
  "webName": "用戶管理系統",
  "translations": "English"
}
View Code

以上是按照語言格式進行多文件分類的實現,下面是按照功能模塊進行多文件分類的實現

4.2 按功能模塊進行文件分類

4.2.1 目錄結構

i18n
--index.js
--login.js
--test.js

4.2.2 main.js

   同 4.1.2 main.js

4.2.2 i18n/index.js

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import {zh as loginZh, en as loginEn} from './login'
import {zh as testZh, en as testEn} from './test'

Vue.use(VueI18n)

let EN = {
  login: loginEn,
  test: testEn
}
let ZH = {
  login: loginZh,
  test: testZh
}

const i18n = new VueI18n({
  locale: 'zh',
  messages: {
    en: EN,
    zh: ZH
  }
})

export default i18n
View Code

4.2.3 i18n/login.js

export const en = {
  "title": "title"
}

export const zh = {
  "title": "標題"
}
View Code

4.2.4 i18n/test.js

export const en = {
  "title": "title",
  "err": "error"
}

export const zh = {
  "title": "標題",
  "err": "錯誤信息"
}
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM