Se você tem o código do país US
, FR
(ISO-3166-1 alpha-2 country code), como você obtém o código de localidade (Locale.US
, Locale.FRANCE
) para fazer algo assim:
System.out.println(DecimalFormat.getCurrencyInstance(Locale.US).format(12.34));
System.out.println(DecimalFormat.getCurrencyInstance(Locale.FRANCE).format(12.34));
$12.34
12,34 €
Respostas:
14 para resposta № 1Você não pode, porque um Locale é usado para manter umlíngua, não um país. Pode conter uma língua para um país específico e para uma variante específica neste país, mas é "uma linguagem em primeiro lugar. E não existe uma relação de um para um entre um idioma e um país. A maioria dos idiomas é falada em vários países e muitos países têm várias línguas.
Se você tivesse o código do país para um idioma, você poderia usar new Locale(code)
. Mas com um código de país, tudo o que você pode fazer é ligar getAvailableLocales
, percorra os resultados e encontre um que tenha o código do seu país. Mas pode haver vários.
2 para resposta № 2
Você pode criar o local,
new Locale("en", "US")
new Locale("fr", "FR")
ou
iterar por Locale.getAvailableLocales()
até encontrar sua localidade e, em seguida, usar essa instância.
2 para resposta № 3
Um local é especificado mais importante pelo código de idioma ISO-639, possível também um código de país ISO-3166 e uma variante. o Locale
A classe tem construtores que usam apenas um código de idioma ou, adicionalmente, um código de país ou, adicionalmente, uma variante.
Se você tiver apenas o código do país, primeiro precisará de um mapa que o converta em um código de idioma, mas isso não produz necessariamente um resultado exclusivo, pois muitos países usam mais de um idioma oficial.
2 para resposta № 4
No Java7 existe o Locale.Builder
, mas antes disso não é um caminho fácil. Você pode, no entanto, criar um método de utilidade:
- laço
Locale.getAvailableLocales()
- para cada cheque se
locale.getCountryCode().equals(countryCodeParam)
e devolva