Якщо у вас є код країни 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
, але до цього немає простого способу. Однак ви можете створити корисний метод:
- петля
Locale.getAvailableLocales()
- для кожної перевірки, якщо
locale.getCountryCode().equals(countryCodeParam)
і повернути його