灵魂摆渡
灵魂摆渡
  • 发布:2022-06-18 11:36
  • 更新:2023-04-11 15:56
  • 阅读:2351

【报Bug】uni.getLocale()获取语言不正确!!!

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 和版本无关

HBuilderX类型: 正式

HBuilderX版本号: 3.4.15

手机系统: Android

手机系统版本号: Android 12

手机厂商: 华为

手机机型: 麦芒9,系统为鸿蒙2.0

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
let locale = uni.getLocale();  

console.log(locale);

操作步骤:

系统语言为日语时,uni.getLocale()获取到的语言是中文简体:zh-Hans

预期结果:

获取到对应的语言

实际结果:

没获取到对应的语言

bug描述:

系统语言为日语时,uni.getLocale()获取到的语言是中文简体:zh-Hans

2022-06-18 11:36 负责人:无 分享
已邀请:
FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

这个是获取app的语音的吧

  • 灵魂摆渡 (作者)

    不是的,获取系统的,当系统语言是英语、繁体中文时没有问题,系统语言为日本语时获取到的语言是简体中文的!

    2022-06-18 17:59

DCloud_heavensoft

DCloud_heavensoft

你搞错了,这个是app的语言。只不过如果os的语言和app的语言可以匹配,会有兼容策略。
你需要看getSystemInfo的API,那里有系统语言。
如果你要支持日语,也可以不获取getSystemInfo,按uni国际化的规范在项目下配好日语资源,默认就可以自动兼容。

  • 灵魂摆渡 (作者)

    这个肯定是有BUG的,我测试好多次了的,在app使用uni.setLocale()设置语言后,uni.getLocale()获取到的语言是对的!在app没有设置语言的时候,系统语言为简体中文,繁体中文,英语,藏语时uni.getLocale()获取到的语言都是对的,当系统语言为日语时,这个接口获取到的是简体中文,这难道不是BUG?

    2022-06-20 09:20

  • 灵魂摆渡 (作者)

    也不像文档里说的那样,没有语言资源的时默认为英文,而是默认为中文!

    2022-06-20 09:24

  • 灵魂摆渡 (作者)

    getSystemInfo的语言,简体中文和繁体中文返回的都是zh-CN!

    2022-06-20 09:26

  • 灵魂摆渡 (作者)

    这个BUG没人解决也没人理会的吗?

    2022-07-16 15:31

  • DCloud_heavensoft

    回复 3***@qq.com: 能不能重新梳理下你说的问题,确保你在理解了getLocale和getSystemInfo是两码事的基础之上,再好好描述下你的问题

    2022-07-16 17:41

  • 灵魂摆渡 (作者)

    回复 DCloud_heavensoft: 那你自己看一下下面的那两张图片吧,说再多都是废话!

    2022-07-26 10:02

  • 灵魂摆渡 (作者)

    回复 DCloud_heavensoft: 系统语言是日语的时候,打印weex.requireModule('plus').getLanguage()的值是zh-Hans(中文简体),我能说什么?我还要怎么去理解你所说的那两个接口?

    2022-07-26 10:06

  • 灵魂摆渡 (作者)

    回复 DCloud_heavensoft: 如果说你认为你们的代码逻辑没有问题,那么你们就当我说的是废话,不用去复现这个问题!你们就一定能确保你们的代码100%是正确的?市面上的设备千千万万,每台你们都能测试到?

    2022-07-26 10:13

  • DCloud_heavensoft

    回复 3***@qq.com: 我感觉我们是鸡同鸭讲。uni-app获取手机os的语言的api是uni.getSystemInfo里的osLanguage啊,你把os的语言改成日文,要打印这个api才有意义。而getLocale取的是app的语言设置。app的语言和os的语言是2码事。

    2022-07-26 19:27

  • 灵魂摆渡 (作者)

    回复 DCloud_heavensoft: 说了叫你看最下面的两张图片,就是把手机系统的语言调成日语的,uni.getSystemInfo里的osLanguage获取到的依然是中文简体啊,这么简单的事情,要说几次呢??!!

    2022-07-29 13:51

  • 灵魂摆渡 (作者)

    回复 DCloud_heavensoft: 我知道getLocale获取的是app语言,app的语言和os语言是两码事,但是uni.getSystemInfo获取到的系统语言不对了,在没有setLocale的情况下,getLocale获取到的语言怎么会对呢????

    2022-07-29 13:54

  • 灵魂摆渡 (作者)

    回复 DCloud_heavensoft: 有多人遇到这个问题,这总不是我自己搞错的问题了吧?可以看这个贴子:https://ask.dcloud.net.cn/question/128830

    2022-07-29 14:30

  • 灵魂摆渡 (作者)

    回复 DCloud_heavensoft: 共同点都是华为手机,我在小米手机上也没发现有错!

    2022-07-29 14:32

  • DCloud_heavensoft

    回复 3***@qq.com: 你下面贴的截图,并不是打印uni.getSystemInfoSync里的osLanguage。然后你发的别人的帖子,是n年前的bug,早已修复。而osLanguage是最近2个月才出的新api。你要认为这个新api有bug,那就好好报,打印信息

    2022-07-29 17:36

DCloud_UNI_GSQ

DCloud_UNI_GSQ

仅此设备表现如此吗?

  • 灵魂摆渡 (作者)

    其他设备没有测试,但这台设备确实表现如此!

    2022-06-21 10:29

  • 灵魂摆渡 (作者)

    这个BUG没人解决也没人理会的吗?

    2022-07-16 15:31

灵魂摆渡

灵魂摆渡 (作者)

这个BUG没人解决也没人理会的吗?

  • DCloud_UNI_GSQ

    目前使用其他设备测试未复现此问题,由于没有对应的设备,需要你帮忙测试一些:


    打印一下 weex.requireModule('plus').getLanguage()

    2022-07-20 11:32

  • 灵魂摆渡 (作者)

    回复 DCloud_UNI_GSQ:确实是不对,在下方有图片

    2022-07-25 17:36

  • DCloud_UNI_GSQ

    回复 3***@qq.com: 收到,我们先排查一下,后续可能还需要你帮忙测试。

    2022-07-29 18:01

灵魂摆渡

灵魂摆渡 (作者)


DCloud_Android_ST

DCloud_Android_ST

1、请使用标准API uni.getSystemInfoSync().osLanguage
2、请使用HX3.4.18+版本基座测试下
3、语言设置中地域改成日本是否返回就正常了
4、建议多试几台设备、不排除是设备系统自身问题
提供下具体设备型号,我们现在试了多台设备 没有返回中文的情况

1***@163.com

1***@163.com - 90后IT男

uni.getSystemInfoSync().osLanguage 使用这个API获取语言是正常的,但是官网案例用的是 uni.getLocale 这个API ,摸索了半天,找到这来了,一直以为是自己哪里没配置好,uni.getLocale 获取的是app设置的语言, 我在manifest.json文件里面设置的默认语言是英语,uni.getLocale 返回的是中文繁体,可我从来没设置过,不知道哪里出问题了。

  • DCloud_Android_ST

    你好 提供下QQ跟你对接下问题

    2022-08-16 16:45

  • 1***@163.com

    回复 DCloud_Android_ST: 已解决,修改手机系统语言后,重启应用就好了。

    2022-08-22 15:52

  • DCloud_Android_ST

    回复 1***@163.com: 设置语言后应用不会重新吗 我没遇到过这样的手机设备 一般都会自动重启应用

    2022-08-22 16:58

  • 1***@163.com

    回复 DCloud_Android_ST: 哦,我做的是根据所在国家自动切换不同语言包,没有手动切换的,手动切换是需要重启的。

    2022-08-23 09:36

DCloud_Android_ST

DCloud_Android_ST

请提供下QQ 对接下该问题

  • 2***@qq.com

    2787959032

    2024-06-27 17:16

  • 2***@qq.com

    设置了系统语言之后,uni.getLocale()返回依然是en

    2024-06-27 17:18

w***@sailheader.com

w***@sailheader.com

提供一个类似的bug:

1。在main.js 里获取了 系统语言 此处正确。  
2. 在app.vue    uni.getLocale()语言。  
3.  此操作在安卓上没问题。在ios上 2会返回一个错误的语言。

要回复问题请先登录注册