vue多国语言方案

Vue国际化实现方案

原文地址:此刻_你不在

  1. 安装vue-i18n
npm i vue-i18n -S
  1. src/main.js中 实例化/注册`vue-i18n
...
import VueI18n from "vue-i18n"; // 引入组件

Vue.use(VueI18n); //注册组件

const i18n = new VueI18n({
  locale: "zh", //语言标识 默认语言
    // CommonJS规范引入语言文件
  messages: { 
    zh: require("@/assets/lang/zh"),
    en: require("@/assets/lang/en"),
  },
});

new Vue({
  i18n, //在Vue实例上挂在组件
  render: (h) => h(App),
}).$mount("#app");
  1. src/assets目录下创建语言包lang并且创建语言文件
assets  
└─lang
        en.js
        zh.js

生成 tree 视图: tree -I "node_modules|dist" (tree.exe)
assets/lang/zh.js

module.exports = {
  classical: {
    title: "木兰诗",
    content: `唧唧复唧唧,木兰当户织。不闻机杼声,唯闻女叹息。`
  },
};

assets/lang/en.js

module.exports = {
  classical: {
    title: "Mulan Poetry",
    content: `Haw and haw, Magnolia weaving. I don't hear the sound of the loom, but I hear the sigh of the girl.
  },
};

至此 一切准备工作准备完毕,接下来让我们使用它。

在任意组件中可以使用

this.$t('classical.title');

获取当前语言配置版本的文本,在模板中使用{{$t('classical.title')}} 也能达到效果,且更直接。

语言配置切换

methods: {
  chooseLang(langType) {
    this.$i18n.locale = langType;
},

langType参数为src/main.jsmessages的key

附录:各国语言简写

Countries and Regions 国家或地区 *国际域名缩写*
Angola 安哥拉 AO
Afghanistan 阿富汗 AF
Albania 阿尔巴尼亚 AL
Algeria 阿尔及利亚 DZ
Andorra 安道尔共和国 AD
Anguilla 安圭拉岛 AI
Antigua and Barbuda 安提瓜和巴布达 AG
Argentina 阿根廷 AR
Armenia 亚美尼亚 AM
Ascension 阿森松
Australia 澳大利亚 AU
Austria 奥地利 AT
Azerbaijan 阿塞拜疆 AZ
Bahamas 巴哈马 BS
Bahrain 巴林 BH
Bangladesh 孟加拉国 BD
Barbados 巴巴多斯 BB
Belarus 白俄罗斯 BY
Belgium 比利时 BE
Belize 伯利兹 BZ
Benin 贝宁 BJ
Bermuda Is. 百慕大群岛 BM
Bolivia 玻利维亚 BO
Botswana 博茨瓦纳 BW
Brazil 巴西 BR
Brunei 文莱 BN
Bulgaria 保加利亚 BG
Burkina-faso 布基纳法索 BF
Burma 缅甸 MM
Burundi 布隆迪 BI
Cameroon 喀麦隆 CM
Canada 加拿大 CA
Cayman Is. 开曼群岛
Central African Republic 中非共和国 CF
Chad 乍得 TD
Chile 智利 CL
China 中国 CN
Colombia 哥伦比亚 CO
Congo 刚果 CG
Cook Is. 库克群岛 CK
Costa Rica 哥斯达黎加 CR
Cuba 古巴 CU
Cyprus 塞浦路斯 CY
Czech Republic 捷克 CZ
Denmark 丹麦 DK
Djibouti 吉布提 DJ
Dominica Rep. 多米尼加共和国 DO
Ecuador 厄瓜多尔 EC
Egypt 埃及 EG
EI Salvador 萨尔瓦多 SV
Estonia 爱沙尼亚 EE
Ethiopia 埃塞俄比亚 ET
Fiji 斐济 FJ
Finland 芬兰 FI
France 法国 FR
French Guiana 法属圭亚那 GF
Gabon 加蓬 GA
Gambia 冈比亚 GM
Georgia 格鲁吉亚 GE
Germany 德国 DE
Ghana 加纳 GH
Gibraltar 直布罗陀 GI
Greece 希腊 GR
Grenada 格林纳达 GD
Guam 关岛 GU
Guatemala 危地马拉 GT
Guinea 几内亚 GN
Guyana 圭亚那 GY
Haiti 海地 HT
Honduras 洪都拉斯 HN
Hongkong 香港 HK
Hungary 匈牙利 HU
Iceland 冰岛 IS
India 印度 IN
Indonesia 印度尼西亚 ID
Iran 伊朗 IR
Iraq 伊拉克 IQ
Ireland 爱尔兰 IE
Israel 以色列 IL
Italy 意大利 IT
Ivory Coast 科特迪瓦
Jamaica 牙买加 JM
Japan 日本 JP
Jordan 约旦 JO
Kampuchea (Cambodia ) 柬埔寨 KH
Kazakstan 哈萨克斯坦 KZ
Kenya 肯尼亚 KE
Korea 韩国 KR
Kuwait 科威特 KW
Kyrgyzstan 吉尔吉斯坦 KG
Laos 老挝 LA
Latvia 拉脱维亚 LV
Lebanon 黎巴嫩 LB
Lesotho 莱索托 LS
Liberia 利比里亚 LR
Libya 利比亚 LY
Liechtenstein 列支敦士登 LI
Lithuania 立陶宛 LT
Luxembourg 卢森堡 LU
Macao 澳门 MO
Madagascar 马达加斯加 MG
Malawi 马拉维 MW
Malaysia 马来西亚 MY
Maldives 马尔代夫 MV
Mali 马里 ML
Malta 马耳他 MT
Mariana Is 马里亚那群岛
Martinique 马提尼克
Mauritius 毛里求斯 MU
Mexico 墨西哥 MX
Moldova, Republic of 摩尔多瓦 MD
Monaco 摩纳哥 MC
Mongolia 蒙古 MN
Montserrat Is 蒙特塞拉特岛 MS
Morocco 摩洛哥 MA
Mozambique 莫桑比克 MZ
Namibia 纳米比亚 NA
Nauru 瑙鲁 NR
Nepal 尼泊尔 NP
Netheriands Antilles 荷属安的列斯
Netherlands 荷兰 NL
New Zealand 新西兰 NZ
Nicaragua 尼加拉瓜 NI
Niger 尼日尔 NE
Nigeria 尼日利亚 NG
North Korea 朝鲜 KP
Norway 挪威 NO
Oman 阿曼 OM
Pakistan 巴基斯坦 PK
Panama 巴拿马 PA
Papua New Cuinea 巴布亚新几内亚 PG
Paraguay 巴拉圭 PY
Peru 秘鲁 PE
Philippines 菲律宾 PH
Poland 波兰 PL
French Polynesia 法属玻利尼西亚 PF
Portugal 葡萄牙 PT
Puerto Rico 波多黎各 PR
Qatar 卡塔尔 QA
Reunion 留尼旺
Romania 罗马尼亚 RO
Russia 俄罗斯 RU
Saint Lueia 圣卢西亚 LC
Saint Vincent 圣文森特岛 VC
Samoa Eastern 东萨摩亚(美)
Samoa Western 西萨摩亚
San Marino 圣马力诺 SM
Sao Tome and Principe 圣多美和普林西比 ST
Saudi Arabia 沙特阿拉伯 SA
Senegal 塞内加尔 SN
Seychelles 塞舌尔 SC
Sierra Leone 塞拉利昂 SL
Singapore 新加坡 SG
Slovakia 斯洛伐克 SK
Slovenia 斯洛文尼亚 SI
Solomon Is 所罗门群岛 SB
Somali 索马里 SO
South Africa 南非 ZA
Spain 西班牙 ES
Sri Lanka 斯里兰卡 LK
St.Lucia 圣卢西亚 LC
St.Vincent 圣文森特 VC
Sudan 苏丹 SD
Suriname 苏里南 SR
Swaziland 斯威士兰 SZ
Sweden 瑞典 SE
Switzerland 瑞士 CH
Syria 叙利亚 SY
Taiwan 台湾省 TW
Tajikstan 塔吉克斯坦 TJ
Tanzania 坦桑尼亚 TZ
Thailand 泰国 TH
Togo 多哥 TG
Tonga 汤加 TO
Trinidad and Tobago 特立尼达和多巴哥 TT
Tunisia 突尼斯 TN
Turkey 土耳其 TR
Turkmenistan 土库曼斯坦 TM
Uganda 乌干达 UG
Ukraine 乌克兰 UA
United Arab Emirates 阿拉伯联合酋长国 AE
United Kiongdom 英国 GB
United States of America 美国 US
Uruguay 乌拉圭 UY
Uzbekistan 乌兹别克斯坦 UZ
Venezuela 委内瑞拉 VE
Vietnam 越南 VN
Yemen 也门 YE
Yugoslavia 南斯拉夫 YU
Zimbabwe 津巴布韦 ZW
Zaire 扎伊尔 ZR
Zambia 赞比亚 ZM

Leave a Reply