我有这些代码行:
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,但它不是).有人认为通过代码获取国家真的有可能吗?任何的想法?非常感谢.