Recherche…


Remarques

Java est fourni avec un mécanisme puissant et flexible pour la localisation de vos applications, mais il est également facile d’utiliser un programme qui ignore ou modifie les paramètres régionaux de l’utilisateur, et donc son comportement.

Vos utilisateurs s'attendent à voir les données localisées dans les formats auxquels ils sont habitués, et tenter de les prendre en charge manuellement est une erreur. Voici juste un petit exemple des différentes manières dont les utilisateurs s'attendent à voir le contenu que vous pouvez supposer être "toujours" affiché d'une certaine manière:

Rendez-vous Nombres Monnaie locale Monnaie étrangère Distances
Brésil
Chine
Egypte
Mexique 20/3/16 1.234,56 1 000,50 $ 1,000.50 USD
Royaume-Uni 20/3/16 1 234,56 £ 1,000.50 100 km
Etats-Unis 20/03/16 1 234,56 1 000,50 $ 1,000.50 MXN 60 mi

Ressources générales

Ressources Java

Format automatique des dates en utilisant "locale"

SimpleDateFormatter est génial dans un pincement, mais comme son nom l'indique, il ne s'adapte pas bien.

Si vous codez "MM/dd/yyyy" sur votre application, vos utilisateurs internationaux ne seront pas contents.

Laissez Java faire le travail pour vous

Utilisez les méthodes static dans DateFormat pour récupérer le format correct pour votre utilisateur. Pour une application de bureau (sur laquelle vous comptez sur les paramètres régionaux par défaut ), appelez simplement:

String localizedDate = DateFormat.getDateInstance(style).format(date);

style est l'une des constantes de formatage ( FULL , LONG , MEDIUM , SHORT , etc.) spécifiées dans DateFormat .

Pour une application côté serveur dans laquelle l'utilisateur spécifie ses paramètres régionaux dans le cadre de la requête, vous devez le transmettre explicitement à getDateInstance() place:

String localizedDate =
    DateFormat.getDateInstance(style, request.getLocale()).format(date);

Comparaison de chaîne

Comparez deux chaînes en ignorant la casse:

"School".equalsIgnoreCase("school"); // true

Ne pas utiliser

text1.toLowerCase().equals(text2.toLowerCase());

Les langues ont des règles différentes pour convertir les majuscules et les minuscules. Un "je" serait converti en "i" en anglais. Mais en turc, un «je» devient un «ı». Si vous devez utiliser toLowerCase() utiliser la surcharge qui attend une Locale : String.toLowerCase(Locale) .

En comparant deux chaînes en ignorant les différences mineures:

Collator collator = Collator.getInstance(Locale.GERMAN);
collator.setStrength(Collator.PRIMARY);
collator.equals("Gärten", "gaerten"); // returns true

Trier les chaînes en respectant l'ordre du langage naturel, en ignorant la casse (utilisez la clé de classement pour:

String[] texts = new String[] {"Birne", "äther", "Apfel"};
Collator collator = Collator.getInstance(Locale.GERMAN);
collator.setStrength(Collator.SECONDARY); // ignore case
Arrays.sort(texts, collator::compare); // will return {"Apfel", "äther", "Birne"}

Lieu

La classe java.util.Locale est utilisée pour représenter une région "géographique, politique ou culturelle" permettant de localiser un texte, un numéro, une date ou une opération donnés. Un objet Locale peut donc contenir un pays, une région, une langue et également une variante d'une langue, par exemple un dialecte parlé dans une certaine région d'un pays ou parlé dans un pays différent du pays d'origine de la langue.

L'instance de paramètres régionaux est transmise aux composants qui doivent localiser leurs actions, que ce soit pour convertir l'entrée, la sortie ou simplement en avoir besoin pour des opérations internes. La classe Locale ne peut effectuer aucune internationalisation ou localisation par elle-même

La langue

La langue doit être un code de langue ISO 639 2 ou 3 caractères, ou une sous-étiquette de langue enregistrée de 8 caractères maximum. Si une langue a à la fois un code de langue à 2 et 3 caractères, utilisez le code à 2 caractères. Une liste complète des codes de langue se trouve dans le registre des sous-étiquettes de langues de l'IANA.

Les codes de langue sont insensibles à la casse, mais la classe Locale utilise toujours des versions minuscules des codes de langue

Créer une locale

La création d'une instance java.util.Locale peut se faire de quatre manières différentes:

Locale constants
Locale constructors
Locale.Builder class
Locale.forLanguageTag factory method 

Java ResourceBundle

Vous créez une instance ResourceBundle comme ceci:

Locale locale = new Locale("en", "US");
ResourceBundle labels = ResourceBundle.getBundle("i18n.properties");
System.out.println(labels.getString("message"));

Considère que j'ai un fichier de propriétés i18n.properties :

message=This is locale

Sortie:

This is locale

Réglage des paramètres régionaux

Si vous souhaitez reproduire l'état en utilisant d'autres langages, vous pouvez utiliser la méthode setDefault() . Son utilisation:

 setDefault(Locale.JAPANESE); //Set Japanese


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow