uni-app - - - - -使用i18n配置国际化语言
- [1. 安装vue-i18n](#1. 安装vue-i18n)
- [2. 配置文件](#2. 配置文件)
-
- [2.1 创建如下文件](#2.1 创建如下文件)
- [2.2 文件配置](#2.2 文件配置)
- [2.3 main文件导入i18n](#2.3 main文件导入i18n)
- [3. 页面内使用](#3. 页面内使用)
-
- [3.1 template内直接使用](#3.1 template内直接使用)
- [3.2 变量接收使用](#3.2 变量接收使用)
1. 安装vue-i18n
bash
npm install vue-i18n --save
2. 配置文件
2.1 创建如下文件
- locales文件夹里的js文件,对应各个语言的配置
2.2 文件配置
en-US.js
js
// 英文配置文件
export default {
str: 'string',
obj: {
key1: 'value1',
key2: 'value2'
},
arr: ['arr1', 'arr2']
}
zh-CN.js
js
// 中文配置文件
export default {
str: '字符串',
obj: {
key1: '字段1',
key2: '字段2'
},
arr: ['元素1', '元素2']
}
index.js
js
import {
createI18n
} from "vue-i18n";
import zhCN from "./locales/zh-CN";
import enUS from "./locales/en-US";
const systemInfo = uni.getSystemInfoSync();
console.log(systemInfo);
//uni.showModal({
// title: '宿主语言',
// content: systemInfo.hostLanguage
//})
let _lan = systemInfo.hostLanguage || 'zh-CN'; // 获取本地存储 || 根据浏览器语言设置
console.log('当前语言为:', _lan);
const i18n = createI18n({
fallbackLocale: 'zh-CN',
legacy: false, // 使用Composition API,这里必须设置为false
locale: _lan, // 默认使用语言
globalInjection: true, // 全局注册$t方法
messages: {
"zh-CN": zhCN,
en: enUS,
},
});
export default i18n;
2.3 main文件导入i18n
html
import i18n from "./language";
...
app.use(i18n)
3. 页面内使用
3.1 template内直接使用
注意:对象、数据 使用$tm
html
<view>字符串: {{ $t('str') }} </view>
<view>字符串: {{ $tm('obj.key1') }} </view>
<view>字符串: {{ $tm('arr')[0] }} </view>
3.2 变量接收使用
html
<view>字符串: {{ pageStr }} </view>
<view>字符串: {{ pageObj }} </view>
<view>字符串: {{ pageArr }} </view>
js
import i18n from "/language";
const pageStr = ref(computed(() => i18n.global.t("str")))
const pageObj = ref(computed(() => i18n.global.tm("obj")))
const pageArr = ref(computed(() => i18n.global.tm("arr")))
return {
pageStr,
pageObj,
pageArr
}