uni-app - - - - -使用i18n配置国际化语言
- 1. 安装vue-i18n
- 2. 配置文件
- 2.1 创建如下文件
- 2.2 文件配置
- 2.3 main文件导入i18n
- 3. 页面内使用
- 3.1 template内直接使用
- 3.2 变量接收使用
1. 安装vue-i18n
npm install vue-i18n --save
2. 配置文件
2.1 创建如下文件
- locales文件夹里的js文件,对应各个语言的配置
2.2 文件配置
en-US.js
// 英文配置文件
export default {
str: 'string',
obj: {
key1: 'value1',
key2: 'value2'
},
arr: ['arr1', 'arr2']
}
zh-CN.js
// 中文配置文件
export default {
str: '字符串',
obj: {
key1: '字段1',
key2: '字段2'
},
arr: ['元素1', '元素2']
}
index.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
import i18n from "./language";
...
app.use(i18n)
3. 页面内使用
3.1 template内直接使用
注意:对象、数据 使用$tm
<view>字符串: {{ $t('str') }} </view>
<view>字符串: {{ $tm('obj.key1') }} </view>
<view>字符串: {{ $tm('arr')[0] }} </view>
3.2 变量接收使用
<view>字符串: {{ pageStr }} </view>
<view>字符串: {{ pageObj }} </view>
<view>字符串: {{ pageArr }} </view>
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
}