uni-app - - - - -vue3使用i18n配置国际化语言

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
}
相关推荐
喵个咪11 小时前
拒绝过度封装!GoWind Admin:基于Element Plus重塑中后台CRUD开发范式
前端·vue.js·typescript
angerdream12 小时前
Android手把手编写儿童手机远程监控App之WebRtc切换摄像头与桌面共享
vue.js
kisshyshy12 小时前
# 🔥 数组去重:从双重循环到 Set,面试官想听什么?
javascript·面试
RD_daoyi12 小时前
Google 网站收录全流程解析:抓取、索引与排名机制详解
前端·javascript·人工智能·学习·搜索引擎·html
@大迁世界12 小时前
AI还替不了的JS能力
开发语言·前端·javascript·人工智能·ecmascript
暗冰ཏོ12 小时前
2026前端开发资源整理大全:从基础学习到工程化实战的完整导航
前端·javascript·css·前端框架·html
喵个咪13 小时前
吃透后台权限系统:从架构设计到 Vue3/React 双框架完整落地
前端·vue.js·react.js
hdsoft_huge13 小时前
全开源数字孪生系统搭建方案:全套技术文档
vue.js·开源·node.js·echarts·webstorm
学且思13 小时前
Vue3 Patch 算法深度解析:从原理到源码实现
前端·vue.js
卤蛋fg614 小时前
vxe-table 导出 XLSX 文件:自动展开分组并导出图片
vue.js