uniapp 实现项目多语言切换

UniApp开发微信小程序实现中英文切换的两种方案

avatar

2025-09-03 08:22:48

在UniApp开发微信小程序时,实现中英文切换功能是常见的国际化需求。本文将介绍两种实现方案:自定义i18n工具和vue-i18n插件,帮助开发者根据项目需求选择合适的方法。

自定义i18n工具实现方案

创建多语言资源文件

在项目的locales目录下,创建多个JSON文件存放不同语言的文本资源。例如:

en.json (英文)

json

复制

{

"hello": "Hello",

"welcome": "Welcome to our application"

}

zh.json (中文)

json

复制

{

"hello": "你好",

"welcome": "欢迎使用我们的应用程序"

}

实现i18n工具

创建i18n.js文件管理多语言逻辑:

JavaScript

复制

const locales = {

zh: require('./zh.json'),

en: require('./en.json'),

};

let currentLocale = '';

if (!uni.getStorageSync('locale')) {

const systemLanguage = uni.getSystemInfoSync().language;

currentLocale = systemLanguage.startsWith('zh') ? 'zh' : 'en';

} else {

currentLocale = uni.getStorageSync('locale');

}

const i18n = {

t(key) {

return locales[currentLocale][key] || key;

},

setLocale(locale) {

if (locales[locale]) {

currentLocale = locale;

uni.setStorageSync('locale', currentLocale);

} else {

console.warn(Locale ${locale} not found);

}

},

};

export default i18n;

在main.js中配置和引用i18n

JavaScript

复制

import Vue from 'vue';

import App from './App';

import i18n from './utils/i18n';

Vue.config.productionTip = false;

Vue.prototype.$i18n = i18n;

App.mpType = 'app';

const app = new Vue({

...App

});

app.$mount();

在页面中使用多语言功能

HTML

复制

{{ i18n.t('hello') }} {{ i18n.t('welcome') }}

<button @click="switchLanguage('en')">English

<button @click="switchLanguage('zh')">中文

使用vue-i18n插件实现方案

安装依赖

bash

复制

npm install vue-i18n@8 # Vue 2 项目

npm install vue-i18n@9 # Vue 3 项目

创建语言包文件

在项目中新建lang文件夹,存放不同语言的JSON文件:

en.json

json

复制

{

"hello": "Hello",

"welcome": "Welcome to UniApp"

}

zh-CN.json

json

复制

{

"hello": "你好",

"welcome": "欢迎使用 UniApp"

}

初始化vue-i18n

在main.js中配置国际化:

JavaScript

复制

import Vue from 'vue';

import App from './App';

import VueI18n from 'vue-i18n';

Vue.use(VueI18n);

const messages = {

en: require('@/lang/en.json'),

'zh-CN': require('@/lang/zh-CN.json'),

};

const i18n = new VueI18n({

locale: 'zh-CN', // 默认语言

messages,

});

const app = new Vue({

i18n,

...App

});

app.$mount();

在页面中使用多语言

HTML

复制

{{ t('hello') }} {{ t('welcome') }}

<button @click="switchLanguage('en')">English

<button @click="switchLanguage('zh-CN')">中文

方案对比

方案 优点 缺点

自定义i18n工具 灵活性高,适合简单需求 需要手动管理语言切换和存储

vue-i18n插件 功能强大,支持复杂需求 依赖第三方库,适合大型项目

相关推荐
TE-茶叶蛋1 天前
Uniapp运行MuMu模拟器
uni-app
一人一程温一壶酒1 天前
微信小程序uniapp开发附源码——图片加水印
微信小程序·uni-app·notepad++
一个假的前端男1 天前
uniapp 3端轮播
前端·javascript·uni-app
Memory沙漏1 天前
IOS如何免费申请开发者证书(uniapp开发)
ios·uni-app
集成显卡2 天前
AI取名大师 | uni-app + Wot UI 跟随设备自动切换明暗主题
人工智能·ui·uni-app·外观配色
zhangyao9403302 天前
uni-app scroll-view特定情况下运用
前端·javascript·uni-app
LXA08092 天前
在 UniApp 中为小程序实现视频播放记录功能
小程序·uni-app·音视频
你真的可爱呀2 天前
【uniapp实践】主题样式配置浅色深色以及自定义
uni-app·sass
小胖学前端2 天前
解决 uniapp H5 与原生应用通信的坑:一个经过实战验证的解决方案
前端·uni-app
2501_916007472 天前
iOS性能调试工具终极指南,从系统底层到多端协同的全方位优化实践(2025版)
android·ios·小程序·https·uni-app·iphone·webview