[Bug] 非国行 mac 的HMCL自动语言选择错误
平台 | Platform
MacOS
问题描述 | Problem Description
来自QQ群 系统语言:简体中文 日版MAC打开HMCL识别为繁体中文
分析
根据代码
import java.util.Locale;
public class Test {
public static void main(String argv[]){
String language = System.getProperty("user.language");
System.out.println("System.getProperty 操作系统语言:" + language);
Locale locale = Locale.getDefault();
language = locale.getLanguage();
System.out.println("Locale 操作系统语言:" + language);
String languageTag = locale.toLanguageTag();
System.out.println("Locale toLanguageTag 操作系统语言:" + languageTag);
}
}
执行结果: Windows、Linux下执行结果为:
System.getProperty 操作系统语言:zh
Locale 操作系统语言:zh
Locale toLanguageTag 操作系统语言:zh-CN
而此人Mac上执行结果为:
System.getProperty 操作系统语言:zh
Locale 操作系统语言:zh
Locale toLanguageTag 操作系统语言:zh-Hans-JP
日版机器设置为简体中文通过Locale.getdefault();获得的Locale是zh_JP_#Hans;
国行机器则是zh_CN_#Hans;
国行机器设置为繁体中文之后获取的Locale则是zh_CN_#Hant,依然是zh_CN作为前缀;
经过测试,国行机器设置系统语言为繁体中文之后,HMCL的默认选择语言也依然是简体;
Bug应该是Java.util.ResourcesBundle的匹配原则把zh_CN*匹配到选择zh_CN,而其他的zh_*就匹配到选择zh的Bundle。
那,我们应该怎么匹配呢?
那,我们应该怎么匹配呢?
目前来看就是让zh_*_Hans匹配到zh_CN上
试了一下,其实不是非国行 Mac 的问题 Locale.getDefault().toLanguageTag() 的值可能与初次设置的地区或者设置里设置的地区之类的有关(这个我不太确定,我暂时不知道怎么修改) 我这里用的国行 Mac,初次开机和设置里的地区的是美国,结果是 zh-Hans-US