/ / Si vous avez le code de pays ISO «US», «FR», comment obtenez-vous le code de paramètres régionaux («Locale.US», «Locale.FRANCE»)? - java, internationalisation, locale, devise

Si vous avez le code de pays ISO «US», «FR», comment obtenir le code de paramètres régionaux («Locale.US», «Locale.FRANCE»)? - java, internationalisation, locale, monnaie

Si vous avez le code du pays US, FR (Code pays ISO-3166-1 alpha-2), comment obtenir le code régional (Locale.US, Locale.FRANCE) pour faire quelque chose comme ça:

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

$12.34
12,34 €

Réponses:

14 pour la réponse № 1

Vous ne pouvez pas "t, car un paramètre régional est utilisé pour contenir unpas un pays. Il peut contenir une langue pour un pays spécifique, et pour une variante spécifique dans ce pays, mais c'est une langue d'abord. Et il n'y a pas de relation biunivoque entre une langue et un pays. La plupart des langues sont parlées dans divers pays et de nombreux pays ont plusieurs langues.

Si vous aviez le code du pays pour une langue, vous pouvez utiliser new Locale(code). Mais avec un code de pays, tout ce que vous pouvez faire est d'appeler getAvailableLocales, parcourez les résultats et trouvez celui qui a votre code de pays. Mais il pourrait y en avoir plusieurs.


2 pour la réponse № 2

Vous pouvez soit créer les paramètres régionaux,

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

ou

parcourir par Locale.getAvailableLocales() jusqu'à ce que vous trouviez vos paramètres régionaux, puis utilisez cette instance.


2 pour la réponse № 3

Un paramètre régional est spécifié le plus important par le code de langue ISO-639, également possible un code de pays ISO-3166 et une variante. le Locale La classe a des constructeurs qui acceptent uniquement un code de langue, ou en plus un code de pays, ou en plus une variante.

Si vous ne disposez que du code de pays, vous avez d'abord besoin d'une carte qui le convertit en code de langue - mais qui ne produit pas nécessairement un résultat unique, de nombreux pays utilisent plus d'une langue officielle.


2 pour la réponse № 4

Dans Java7, il y a le Locale.Builder, mais avant cela, il n'y a pas de moyen simple. Vous pouvez cependant créer une méthode utilitaire:

  1. boucle Locale.getAvailableLocales()
  2. pour chaque chèque si locale.getCountryCode().equals(countryCodeParam) et le retourner