/ / Якщо у вас є код країни ISO `US`,` FR`, як ви отримуєте код Locale (`Locale.US`,` Locale.FRANCE`)? - java, інтернаціоналізація, локал, валюта

Якщо у вас є код країни ISO, "FR", як ви отримуєте код мови ("Locale.US", "Locale.FRANCE")? - java, інтернаціоналізація, локалізація, валюта

Якщо у вас є код країни US, FR (ISO-3166-1 альфа-2 код країни), як отримати код локальної служби (Locale.US, Locale.FRANCE) зробити щось подібне:

System.out.println(DecimalFormat.getCurrencyInstance(Locale.US).format(12.34));
System.out.println(DecimalFormat.getCurrencyInstance(Locale.FRANCE).format(12.34));

$12.34
12,34 €

Відповіді:

14 за відповідь № 1

Ви не можете, тому що Locale використовується для утриманнямова, а не країна. Він може вміщувати мову для конкретної країни та для конкретного варіанту в цій країні, але це "спочатку мова". І між мовою та країною немає відносин "один на один". Більшість мов розмовляють у різних країнах , і багато країн мають кілька мов.

Якщо у вас був код країни для мови, ви можете використовувати його new Locale(code). Але з кодом країни все, що можна зробити, - це зателефонувати getAvailableLocales, перегляньте результати та знайдіть той, у якому є ваш код країни. Але їх може бути кілька.


2 для відповіді № 2

Ви можете створити локаль,

new Locale("en", "US")
new Locale("fr", "FR")

або

повторити наскрізь Locale.getAvailableLocales() поки ви не знайдете свою локальну мову та не використаєте цей примірник.


2 для відповіді № 3

Локал визначається найголовніше кодом мови ISO-639, можливо також кодом країни ISO-3166 та варіантом. The Locale клас має конструктори, які беруть або лише код мови, або додатково код країни, або додатково варіант.

Якщо у вас є лише код країни, спочатку вам потрібна карта, яка перетворює його на код мови, але це не обов'язково дає унікальний результат, багато країн використовують більше однієї офіційної мови.


2 для відповіді № 4

У Java7 є Locale.Builder, але до цього немає простого способу. Однак ви можете створити корисний метод:

  1. петля Locale.getAvailableLocales()
  2. для кожної перевірки, якщо locale.getCountryCode().equals(countryCodeParam) і повернути його