uni-app i18n 进行国际化 安卓版本 只要切换了语言就会无限制白屏重启

uni-app i18n 进行国际化 安卓版本 只要切换了语言就会无限制白屏重启

产品分类

uniapp/App

PC开发环境

操作系统 版本号
Mac 15.4

手机环境

系统 版本号 厂商 机型
Android Android 10 vivo vivo X30 pro

页面类型

vue

vue版本

vue2

打包方式

云端

项目创建方式

HBuilderX

App下载地址或H5网址

https://www.pgyer.com/f664a65680bc9c4230805da691c7296b

示例代码

import Vue from 'vue'
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
const LANGUAGE = uni.getStorageSync('LANGS') || uni.getSystemInfoSync().language || 'ru'  

const i18n = new VueI18n({
locale: LANGUAGE,
fallbackLocale: 'ru',
messages: {
'zh_CN': require('@/locale/cn.json'),
'zh': require('@/locale/cn.json'),
'ru': require('@/locale/ru.json'),
'en': require('@/locale/ru.json'),
}
});

let gloubTimes = null  

const i18nPlugin = {};
i18nPlugin.install = function(Vue, options) {
Vue.mixin({
methods: {
changeLanguage(language = 'zh-CN') {
uni.setLocale(language == 'ru'? 'ru': 'zh-Hans')
uni.setStorageSync('LANGS', language)
this._i18n.locale = language
},
},
});
Vue.prototype._i18n = i18n;
}
//
export {
i18n,
i18nPlugin
}

操作步骤

使用i18n 进行国际化,然后使用click 事件执行切换语言 this.changeLanguage('ru') 就会白屏,然后进入无限重启,只有删除重新安装才可以

预期结果

使用i18n 进行国际化,然后使用click 事件执行切换语言 this.changeLanguage('ru') 就会白屏,然后进入无限重启,只有删除重新安装才可以

实际结果

使用i18n 进行国际化,然后使用click 事件执行切换语言 this.changeLanguage('ru') 就会白屏,然后进入无限重启,只有删除重新安装才可以

bug描述

多语言 使用vi18n 插件国际化 ,只要切换了语言就会无限制白屏重启
所有安卓手机都是这样的


更多关于uni-app i18n 进行国际化 安卓版本 只要切换了语言就会无限制白屏重启的实战教程也可以访问 https://www.itying.com/category-93-b0.html

13 回复

安卓的所有版本只要切换了语言就会无限制白屏重启

更多关于uni-app i18n 进行国际化 安卓版本 只要切换了语言就会无限制白屏重启的实战教程也可以访问 https://www.itying.com/category-93-b0.html


能否新建一个空项目引入这个插件试试,还有问题的话上传一下

回复 恭喜n发财: 4.56的版本不会,4.57的版本就会,

2025-04-10 00:02:39.350 [WARNING:] QMetaObject::connectSlotsByName: No matching signal for on_searchRefresh_clicked() 2025-04-10 00:02:46.427 [INFO:] Upgrade::isFallbackedVersion ? 2025-04-10 00:02:46.427 [INFO:] (checkupdate comparepluginversion) “hbuilder.root” in “/Applications/HBuilderX.app/Contents/HBuilderX/update/backup/root/hbuilder.root” 2025-04-10 00:02:46.429 [INFO:] (checkupdate comparepluginversion about) compare ( “4.57.2025032507” ) about version( 4.56.2025031210 ) in about package.json 2025-04-10 00:02:46.429 [INFO:] Upgrade::isFallbackedVersion return false 2025-04-10 00:02:46.429 [INFO:] Upgrade::canFallback::check( “/Applications/HBuilderX.app/Contents/HBuilderX/update/backup/root/hbuilder.root” ) exits? 2025-04-10 00:02:46.429 [INFO:] Upgrade::canFallback::check( “/Applications/HBuilderX.app/Contents/HBuilderX/update/.data” ) exits? 2025-04-10 00:02:46.429 [INFO:] Upgrade::canFallback::check( “/Applications/HBuilderX.app/Contents/HBuilderX/update/.data” ) exits return true

@BFC 2025-04-10 00:02:46.427 [INFO:] Upgrade::isFallbackedVersion ? 2025-04-10 00:02:46.427 [INFO:] (checkupdate comparepluginversion) “hbuilder.root” in “/Applications/HBuilderX.app/Contents/HBuilderX/update/backup/root/hbuilder.root” 2025-04-10 00:02:46.429 [INFO:] (checkupdate comparepluginversion about) compare ( “4.57.2025032507” ) about
查询日志看到这个,只要点了切换,就无限转圈白屏重启重复

使用https://ext.dcloud.net.cn/plugin?id=6462 测试例验证未发现问题
其他手机设备是否可以复现你描述的问题?请提供下测试项目我们这边排查下

项目在里面

和代码无关,只要进入页面 写了uni.setLocale(‘en’) 就会无限重启,设置的时候 执行uni.setLocale(‘en’) ,然后再进入页面的时候如果还是uni.setLocale(‘en’) 就会一直重启

大佬,你好有没有4.15的sdk?【报Bug】Uni小程序Android端 com.taobao.weex.bridge.WXBridge.nativeResetWXBridge方法报错,导致APP闪退 - DCloud问答

回复 d***@163.com: 直接升级到最新版本就行,4.15 好早的版本了,我是不想本地打包,所以一直跟着版本走,本地打包好麻烦

回复 LOOKINGFFuture: 19:49:46.682 文件查找失败:‘commands’ at pages\manage\printer\printerjobs.js:1 19:49:46.696 文件查找失败:‘dayjs’ at libs\publicTools.js:53 19:49:46.707 文件查找失败:‘dayjs’ at pages\publics\settingPassword.vue:10 19:49:46.719 文件查找失败:‘dayjs/plugin/quarterOfYear’ at libs\publicTools.js:988

运行demo示例报错 你看下

这个问题的根本原因是安卓平台上语言切换时应用状态处理不当导致的。以下是关键分析:

  1. 问题根源:
  • 安卓系统在语言切换时会触发应用重启,而uni-app的i18n切换逻辑没有正确处理这种场景
  • 当前代码中直接修改locale会导致状态不一致
  1. 解决方案:
changeLanguage(language = 'zh-CN') {
  // 先更新storage
  uni.setStorageSync('LANGS', language);
  
  // 使用uni.reLaunch完全重启应用
  uni.reLaunch({
    url: '/pages/index/index'
  });
}
回到顶部