#Uniapp: uniapp国际化适配

embedded/2025/1/11 20:11:55/

uniapp国际化适配

插件安装

npm i vue-i18n@9.1.9

根目录下新建locales文件目录

import Vue from 'vue';
import VueI18n from 'vue-i18n';
import zhCN from './lang/zh-CN';
import enUS from './lang/en-US';// 获取默认语言
export const defaultLang = uni.getStorageSync('language') || 'zh-CN';// 语言包
const messages = {'zh-CN': {...zhCN},'en-US': {...enUS}
};// 判断 Vue 版本
const isVue3 = Vue.version.startsWith('3');let i18n;if (isVue3) {// Vue 3 使用 createI18nconst { createI18n } = VueI18n;i18n = createI18n({legacy: false, // 使用 Composition API 模式locale: defaultLang, // 默认语言fallbackLocale: defaultLang, // 回退语言messages // 语言包});
} else {// Vue 2 使用 VueI18n 构造函数Vue.use(VueI18n);i18n = new VueI18n({silentTranslationWarn: true, // 禁止翻译失败警告locale: defaultLang, // 默认语言fallbackLocale: defaultLang, // 回退语言messages // 语言包});
}/*** 设置语言编码* @param {string} lang 语言编码*/
export function setI18nLanguage(lang) {if (isVue3) {i18n.global.locale = lang; // Vue 3 设置语言} else {i18n.locale = lang; // Vue 2 设置语言}uni.setStorageSync('language', lang); // 持久化语言设置
}/*** 获取语言值* @param {string} key 多语言 key* @returns {string} 语言值*/
export function i18nRender(key) {if (isVue3) {return i18n.global.t(key); // Vue 3 获取翻译} else {return i18n.t(key); // Vue 2 获取翻译}
}export default i18n;

main.js引入

import App from './App';
import i18n from './locales';import navigationBarMixin from './mixin/navigationBarMixin'; // 动态修改导航栏标题// #ifndef VUE3
import Vue from 'vue';Vue.mixin(navigationBarMixin);Vue.config.productionTip = false;
App.mpType = 'app';
const app = new Vue({i18n,...App
});
app.$mount();
// #endif// #ifdef VUE3
import { createSSRApp } from 'vue';
export function createApp() {const app = createSSRApp(App);app.use(i18n)return {app};
}
// #endif

使用示例+语言切换

<template><!-- index.wxml --><view class="container"><view class="top-swiper-images"><image class="swiper-background-image" src="/static/images/swiper_back_img.png"></image><button style='    position: absolute;top: 0;z-index: 999;display: flex;margin: 32rpx;width: 280rpx;background-color:#E60012' size='mini' type="primary" @click="switchLanguage($i18n.locale)">语言切换:{{currentLanguageText}}</button></view></view>
</template><script>import {setI18nLanguage,defaultLang} from '../../locales';export default {data() {return {};},computed: {// 将语言代码转换为友好的文本currentLanguageText() {return this.$i18n.locale === 'zh-CN' ? '中文' : 'English';}},methods: {switchLanguage(lang) {setI18nLanguage(lang == 'zh-CN' ? 'en-US' : 'zh-CN') // 切换语言this.setNavigationBarTitle()},};
</script>
<style>page {background-color: #ffffff;position: relative;}.container {}
</style>

http://www.ppmy.cn/embedded/153110.html

相关文章

基于MATLAB的汽车热管理模型构建

一、引言 汽车热管理系统对汽车性能、部件寿命及驾乘体验至关重要。它能确保发动机、电池等关键部件在适宜温度工作。MATLAB 功能强大&#xff0c;为构建高精度热管理模型提供有效途径&#xff0c;助力优化系统设计与控制策略。 二、汽车热管理系统构成 2.1 发动机冷却系统&…

关于大数据的基础知识(二)——国内大数据产业链分布结构

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///计算机爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于大数据的基础知识&#xff08;二&a…

H2数据库在单元测试中的应用

H2数据库特征 用比较简洁的话来介绍h2数据库&#xff0c;就是一款轻量级的内存数据库&#xff0c;支持标准的SQL语法和JDBC API&#xff0c;工业领域中&#xff0c;一般会使用h2来进行单元测试。 这里贴一下h2数据库的主要特征 Very fast database engineOpen sourceWritten…

HTML实战课堂之启动动画弹窗

一&#xff1a;代码片段讲解 小提示&#xff1a;下面是一个包含启动页和弹窗的完整示例。这个示例包括一个简单的启动页和一个弹窗&#xff0c;当用户点击启动页上的按钮时&#xff0c;会显示弹窗。 1. **HTML结构**&#xff1a; - #startPage&#xff1a;启动页&#xff0c;包…

逆向 易九批 最新版 爬虫逆向 x-sign ......

声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; # 欢迎交流 wjxch1004

List详解 - 双向链表的操作

在C中&#xff0c;std::list是标准模板库&#xff08;STL&#xff09;中的一个容器&#xff0c;它实现了双向链表的数据结构。与数组或向量&#xff08;std::vector&#xff09;不同&#xff0c;std::list允许在常数时间内进行插入和删除操作&#xff0c;尤其是在链表的任意位置…

君正ISP记录三:AE与AWB衍生功能“软光敏“

一、软光敏介绍 消费类摄像机&#xff0c;一般都存在全彩模式和黑白模式&#xff0c;即环境照度较高画面全彩&#xff0c;环境照度较低 画面黑白、开红外补光灯。这时候涉及一个切换问题&#xff0c;如何判断当前的环境照度。 最开始使用的都是硬光敏&#xff0c;即光敏电阻&am…

HTML 迷宫游戏

HTML 迷宫游戏 相关资源文件已经打包成压缩文件&#xff0c;可双击index.html直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Python相关程序案例&#xff0c;秉着开源精神的想法&#xff0c;望大家喜欢&#xff0…