gpt4 book ai didi

java - 有什么方法可以知道 Locale 上的国家/地区默认使用的语言吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:36:18 26 4
gpt4 key购买 nike

我有这些代码行:

Locale[] cosas = Locale.getAvailableLocales();

for (int i = 0; i < cosas.length; i++) {
log.info(cosas[i]);
}

我得到这个列表:

ms_MY
ar_QA
is_IS
fi_FI
pl
en_MT
it_CH
nl_BE
ar_SA
ar_IQ
es_PR
es_CL
fi
de_AT
da
en_GB
es_PA
sr
ar_YE
mk_MK
mk
en_CA
vi_VN
nl_NL
es_US
zh_CN
es_HN
en_US
fr
th
ar
ar_MA
lv
de
in_ID
hr
en_ZA
ko_KR
ar_TN
in
ja
sr_RS
be_BY
zh_TW
ar_SD
pt
is
ja_JP_JP_#u-ca-japanese
es_BO
ar_DZ
ms
es_AR
ar_AE
fr_CA
sl
es
lt_LT
sr_ME_#Latn
ar_SY
ru_RU
fr_BE
es_ES
bg
iw_IL
sv
en
iw
da_DK
es_CR
zh_HK
zh
ca_ES
th_TH
uk_UA
es_DO
es_VE
pl_PL
ar_LY
ar_JO
it
uk
hu_HU
ga
es_GT
es_PY
bg_BG
hr_HR
sr_BA_#Latn
ro_RO
fr_LU
no
lt
en_SG
es_EC
sr_BA
es_NI
sk
ru
mt
es_SV
nl
hi_IN
et
el_GR
sl_SI
it_IT
ja_JP
de_LU
fr_CH
mt_MT
ar_BH
sq
vi
sr_ME
pt_BR
no_NO
el
de_CH
zh_SG
ar_KW
ar_EG
ga_IE
es_PE
cs_CZ
tr_TR
cs
es_UY
en_IE
en_IN
ar_OM
sr_CS
ca
be
sr__#Latn
ko
sq_AL
pt_PT
lv_LV
sr_RS_#Latn
sk_SK
es_MX
en_AU
no_NO_NY
en_NZ
sv_SE
ro
ar_LB
de_DE
th_TH_TH_#u-nu-thai
tr
es_CO
en_PH
et_EE
el_CY
hu
fr_FR

例如,对于作为一个国家/地区的西类牙,该列表包含两个语言环境:es_ES 和 ca_ES,这对于西类牙语来说当然是不同的。

那么,我的问题是,我怎么知道哪个国家/地区默认使用哪种语言?可以仅通过语言构造语言环境,但我只需要为方法传递国家/地区参数,现在我有这段代码来默认分配一种语言:

if (language.equals("")) {
switch (country) {
case "CN":
language = "zh";
break;
case "ES":
language = "es";
break;
case "US":
language = "en";
break;
case "JP":
language = "ja";
break;
default:
country = "";
break;
}
}

if (language.equals("") && country.equals("")) {
newLocale = new Locale("es", "ES");
} else {
newLocale = new Locale(language, country);
}

RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME, newLocale);

但是我需要为更多的语言扩展这个开关。因此,我更希望有一种清晰的方式来为一个国家/地区默认分配语言。

我找到了关于这个 link 的解决方案,但我试过了,但它不对(例如,对于西类牙,它返回为默认的 ca-ES,但事实并非如此)。有人认为真的可以通过代码获取国家吗?任何的想法?非常感谢。

最佳答案

您可以像这样获取区域设置的语言:

String lang = Locale.getDefault().getISO3Language();

您还可以获取语言环境的国家/地区:

String country = Locale.getDefault().getISO3Country();

许多国家有不止一种语言。例如,有加拿大法语和加拿大英语语言环境。

对于任何国家/地区,实际上都没有“默认”语言。 JVM 将使用其所在机器的默认本地语言,但也可以使用 -Duser.country -Duser.language 变量设置语言和国家/地区。

您还可以使用国家和语言的任意组合以编程方式更改默认语言环境。例如,这有效:

    Locale l = new Locale("Ca", "Cyrl");
Locale.setDefault(l);

关于java - 有什么方法可以知道 Locale 上的国家/地区默认使用的语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17921406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com