国际化项目中设置为越南语之后刷新浏览器uni-app的uni.getLocale()返回值是en英文而不是越南语

国际化项目中设置为越南语之后刷新浏览器uni-app的uni.getLocale()返回值是en英文而不是越南语

示例代码:

uni.setLocale('vi')

操作步骤:

调用uni.getLocale()。如果当前语言为中文和英文时是正常的,但是如果当前语言为越南语,在刷新浏览器时会默认返回的是en英文

预期结果:

返回vi越南语

实际结果:

返回的是en英文

bug描述:

国际化语言包中配置的越南语语言包,但是在切换为越南语之后刷新浏览器会出现语言回退现象。在配置文件中设置的默认语言是中文zh,语言回退就默认变成en英文了

image

image



| 信息类别       | 详细信息         |
|----------------|------------------|
| 产品分类       | uniapp/H5        |
| PC开发环境操作系统 | Windows          |
| PC开发环境操作系统版本号 | win11            |
| HBuilderX类型   | 正式             |
| HBuilderX版本号 | 4.45             |
| 浏览器平台     | Chrome           |
| 浏览器版本     | 132.0.6834.197(正式版本) |
| 项目创建方式   | HBuilderX        |

更多关于国际化项目中设置为越南语之后刷新浏览器uni-app的uni.getLocale()返回值是en英文而不是越南语的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

提供个复现工程,说明 vue 和 HBuilderX 依赖版本吧。执行 set 之后是否正常,不刷页面的话是否可以,缩小下问题范围,是不是刷新之后默认取值有问题?

更多关于国际化项目中设置为越南语之后刷新浏览器uni-app的uni.getLocale()返回值是en英文而不是越南语的实战教程也可以访问 https://www.itying.com/category-93-b0.html


不刷新没有问题,只有重启系统或者刷新浏览器就会出现重置的情况

这个问题是由于uni-app的持久化机制导致的。在H5环境下,uni.setLocale()设置的locale值默认不会持久化存储,刷新页面后会回退到默认语言。

解决方案:

  1. 在main.js中初始化时从本地存储读取语言设置:
const savedLocale = uni.getStorageSync('locale') || 'zh'
uni.setLocale(savedLocale)
  1. 在切换语言时同时保存到本地存储:
uni.setLocale('vi')
uni.setStorageSync('locale', 'vi')
  1. 或者在pages.json中配置默认语言:
{
  "globalStyle": {
    "locale": "vi"
  }
}
回到顶部