国际化项目中设置为越南语之后刷新浏览器uni-app的uni.getLocale()返回值是en英文而不是越南语
国际化项目中设置为越南语之后刷新浏览器uni-app的uni.getLocale()返回值是en英文而不是越南语
示例代码:
uni.setLocale('vi')
操作步骤:
调用uni.getLocale()。如果当前语言为中文和英文时是正常的,但是如果当前语言为越南语,在刷新浏览器时会默认返回的是en英文
预期结果:
返回vi越南语
实际结果:
返回的是en英文
bug描述:
国际化语言包中配置的越南语语言包,但是在切换为越南语之后刷新浏览器会出现语言回退现象。在配置文件中设置的默认语言是中文zh,语言回退就默认变成en英文了
| 信息类别 | 详细信息 |
|----------------|------------------|
| 产品分类 | 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值默认不会持久化存储,刷新页面后会回退到默认语言。
解决方案:
- 在main.js中初始化时从本地存储读取语言设置:
const savedLocale = uni.getStorageSync('locale') || 'zh'
uni.setLocale(savedLocale)
- 在切换语言时同时保存到本地存储:
uni.setLocale('vi')
uni.setStorageSync('locale', 'vi')
- 或者在pages.json中配置默认语言:
{
"globalStyle": {
"locale": "vi"
}
}