6

tôi có những dòng mã:Có cách nào để biết ngôn ngữ theo mặc định theo quốc gia trên miền địa phương không?

Locale[] cosas = Locale.getAvailableLocales(); 

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

tôi có được danh sách này:

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 

Ví dụ, đối với Tây Ban Nha là một quốc gia, danh sách chứa hai địa điểm: es_ES và ca_ES, đó không phải là tương tự cho tiếng Tây Ban Nha, tất nhiên.

Sau đó, câu hỏi của tôi là, làm thế nào tôi có thể biết ngôn ngữ nào là ngôn ngữ theo mặc định cho một quốc gia? Có thể xây dựng các địa phương chỉ bằng ngôn ngữ, nhưng tôi cần phải vượt qua bởi tham số cho phương pháp duy nhất của đất nước và bây giờ tôi có mã này để gán một ngôn ngữ theo mặc định:

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); 

Nhưng tôi cần phải mở rộng chuyển đổi này cho nhiều ngôn ngữ hơn. Vì vậy, tôi muốn có một cách rõ ràng để gán ngôn ngữ theo mặc định cho một quốc gia.

Tôi đã tìm ra giải pháp trên link này, nhưng tôi đã thử nó và nó không đúng (ví dụ, đối với Tây Ban Nha, nó trở về mặc định ca-ES, và nó không phải là). Có ai nghĩ rằng nó thực sự có thể để có được quốc gia bằng mã? Bất kỳ ý tưởng? Cảm ơn bạn rất nhiều.

+3

Ý của bạn là gì theo "ngôn ngữ mặc định"? Nếu nhiều ngôn ngữ được nói ở một quốc gia, hiếm khi có một ngôn ngữ được định nghĩa là mặc định hoặc cao cấp hơn. Nếu bạn có nghĩa là ngôn ngữ được sử dụng rộng rãi nhất, không có dữ liệu cho điều đó trong hỗ trợ bản địa hóa trong Java. – jarnbjo

+0

Vâng, đây không phải là theo Quốc gia, nhưng bởi ** người dùng ** nhìn vào ['Locale.getDefault()'] (http://docs.oracle.com/javase/7/docs/api/java/util/ Locale.html # getDefault% 28% 29). –

Trả lời

0

Nó có phải là java không? Tôi đã thực hiện một exe nhỏ trong c + + mà bạn có thể tìm thấy hữu ích: KyaaLocale, bạn có thể tùy chỉnh nó như bạn muốn, thêm nhiều hơn if/then/else s hoặc bất cứ điều gì bạn cần.

+0

Cảm ơn bạn, @Kyousuke Kyaa. Có, tôi cần nó là mã Java. Tôi đã xem xét của bạn, và tôi nghĩ rằng nó không thể biến nó thành mã Java, vì vậy tôi cần một giải pháp khác. – ovejaexiste

0

Bạn có thể lấy ngôn ngữ cho một miền địa phương như thế này:

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

Bạn cũng có thể lấy nước cho một ngôn ngữ:

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

Nhiều quốc gia có nhiều hơn một ngôn ngữ. Ví dụ: có một ngôn ngữ tiếng Anh ở Canada và tiếng Pháp của Canada.

Không thực sự là ngôn ngữ 'mặc định' cho bất kỳ quốc gia nào. JVM sẽ sử dụng địa phương mặc định của máy đang bật, nhưng ngôn ngữ và quốc gia cũng có thể được đặt bằng biến số -Duser.country -Duser.language.

Bạn cũng có thể thay đổi ngôn ngữ mặc định theo lập trình bằng cách sử dụng các kết hợp tùy ý của quốc gia và ngôn ngữ. Ví dụ: hoạt động này:

Locale l = new Locale("Ca", "Cyrl"); 
    Locale.setDefault(l); 
Các vấn đề liên quan