/ / Ak máte ISO kód krajiny `US`,` FR`, ako získate národný kód (`Locale.US`,` Locale.FRANCE`)? - java, internacionalizácia, miestne nastavenie, mena

Ak máte kód ISO krajiny "US", "FR", ako získate kód Locale ("Locale.US", "Locale.FRANCE")? - java, internacionalizácia, lokalizácia, mena

Ak máte kód krajiny US, FR (ISO-3166-1 alfa-2 kód krajiny), ako získate miestny kód (Locale.US, Locale.FRANCE) urobiť niečo také:

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

$12.34
12,34 €

odpovede:

14 pre odpoveď č. 1

Nemôžete, pretože miestne nastavenie sa používa na držanie ajazyk, nie krajina. Môže obsahovať jazyk pre konkrétnu krajinu a pre konkrétny variant v tejto krajine, ale je to najskôr jazyk. Medzi jazykom a krajinou neexistuje individuálny vzťah. Väčšinou sa hovorí v rôznych krajinách. a veľa krajín má niekoľko jazykov.

Ak ste mali kód krajiny pre jazyk, môžete použiť new Locale(code). S kódom krajiny však môžete iba zavolať getAvailableLocales, prehľadajte výsledky a nájdite taký, ktorý má kód vašej krajiny. Ale môže ich byť niekoľko.


2 pre odpoveď č. 2

Môžete vytvoriť miestne nastavenie,

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

alebo

iterovať Locale.getAvailableLocales() kým nenájdete svoje miestne nastavenie a potom túto inštanciu použijete.


2 pre odpoveď č. 3

Najdôležitejšie je miestne nastavenie kódom jazyka ISO-639, možno tiež kódom krajiny ISO-3166 a variantom. The Locale trieda má konštruktory, ktoré berú buď iba jazykový kód, alebo navyše kód krajiny, alebo navyše variant.

Ak máte iba kód krajiny, potrebujete najskôr mapu, ktorá ho prevedie na kód jazyka, ale ktorý nemusí nevyhnutne priniesť jedinečný výsledok, mnoho krajín používa viac ako jeden úradný jazyk.


2 pre odpoveď № 4

V prostredí Java7 existuje Locale.Builder, ale predtým to nie je jednoduché. Môžete si však vytvoriť užitočnú metódu:

  1. slučka Locale.getAvailableLocales()
  2. za každú kontrolu ak locale.getCountryCode().equals(countryCodeParam) a vrátiť ho