Internalisation Java - Guide rapide
Internalisation
L'internalisation ou I18N fait référence à la capacité d'une application à être en mesure de servir des utilisateurs dans plusieurs langues différentes. Java a un support intégré pour l'internalisation. Java fournit également le formatage des nombres, des devises et l'ajustement de la date et de l'heure en conséquence.
L'internationalisation Java permet à une application Java de gérer différentes langues, formats de nombres, devises, formatage de l'heure spécifique à la région.
Localisation
La localisation ou L10N est l'adaptabilité d'une application, c'est-à-dire comment une application s'adapte à une langue spécifique, des formats de nombres, des paramètres de date et d'heure, etc.
Une application Java doit être internationalisée afin de pouvoir se localiser.
Informations dépendantes de la culture
Les éléments d'information suivants varient souvent selon les fuseaux horaires ou les cultures.
Messages
Date
Time
Number
Currency
Measurements
Les numéros de téléphone
Adresses postales
Étiquettes de l'interface graphique
Classes d'internationalisation
Java a un ensemble de classes intégrées qui aident à l'internationalisation d'une application. Ces classes sont les suivantes:
N ° Sr. | Classe et description |
---|---|
1 | Locale Représente une langue avec un pays / une région. |
2 | ResourceBundle Contient du texte ou des objets localisés. |
3 | NumberFormat Utilisez pour formater les nombres / devises selon les paramètres régionaux. |
4 | DecimalFormat Utilisez pour formater les nombres selon le format personnalisé et selon les paramètres régionaux. |
5 | DateFormat Utilisez pour mettre en forme les dates selon les paramètres régionaux. |
6 | SimpleDateFormat Utilisez pour formater les dates selon le format personnalisé et selon les paramètres régionaux. |
Internalisation Java - Configuration de l'environnement
Dans ce chapitre, nous aborderons les différents aspects de la configuration d'un environnement convivial pour Java.
Configuration de l'environnement local
Si vous souhaitez toujours configurer votre environnement pour le langage de programmation Java, cette section vous explique comment télécharger et configurer Java sur votre machine. Voici les étapes de configuration de l'environnement.
Java SE est disponible gratuitement à partir du lien Télécharger Java . Vous pouvez télécharger une version basée sur votre système d'exploitation.
Suivez les instructions pour télécharger Java et exécuter le .exepour installer Java sur votre machine. Une fois que vous avez installé Java sur votre machine, vous devrez définir des variables d'environnement pour qu'elles pointent vers les répertoires d'installation corrects -
Configuration du chemin pour Windows
En supposant que vous ayez installé Java dans le répertoire c: \ Program Files \ java \ jdk -
Cliquez avec le bouton droit sur «Poste de travail» et sélectionnez «Propriétés».
Cliquez sur le bouton "Variables d'environnement" sous l'onglet "Avancé".
Maintenant, modifiez la variable «Path» afin qu'elle contienne également le chemin vers l'exécutable Java. Exemple, si le chemin est actuellement défini sur «C: \ WINDOWS \ SYSTEM32», modifiez votre chemin pour lire «C: \ WINDOWS \ SYSTEM32; c: \ Program Files \ java \ jdk \ bin».
Configuration du chemin pour Linux, UNIX, Solaris, FreeBSD
La variable d'environnement PATH doit être définie pour pointer vers l'endroit où les binaires Java ont été installés. Reportez-vous à la documentation de votre shell, si vous rencontrez des difficultés pour cela.
Exemple, si vous utilisez bash comme shell, vous ajouteriez la ligne suivante à la fin de votre '.bashrc: export PATH = / chemin / vers / java: $ PATH'
Éditeurs Java populaires
Pour écrire vos programmes Java, vous aurez besoin d'un éditeur de texte. Il existe des IDE encore plus sophistiqués disponibles sur le marché. Mais pour l'instant, vous pouvez envisager l'un des éléments suivants -
Notepad - Sur une machine Windows, vous pouvez utiliser n'importe quel éditeur de texte simple comme Notepad (recommandé pour ce tutoriel), TextPad.
Netbeans - Un IDE Java open-source et gratuit qui peut être téléchargé depuis https://www.netbeans.org/index.html.
Eclipse - Un IDE Java développé par la communauté open-source eclipse et peut être téléchargé depuis https://www.eclipse.org/.
Quelle est la prochaine?
Le chapitre suivant vous apprendra comment écrire et exécuter votre premier programme Java et certaines des syntaxes de base importantes en Java nécessaires au développement d'applications.
Internalisation Java - Classe de paramètres régionaux
Un objet Locale représente une région géographique / politique / culturelle spécifique. Toute opération nécessitant un paramètre régional pour effectuer sa tâche est appelée opération sensible aux paramètres régionaux et utilise les paramètres régionaux pour maîtriser les informations relatives à l'utilisateur. Par exemple, l'affichage d'un nombre est une opération sensible aux paramètres régionaux. Le numéro doit être formaté conformément aux coutumes et conventions du pays, de la région ou de la culture d'origine de l'utilisateur.
Contenu des paramètres régionaux
Un objet Locale contient les éléments suivants:
Language- Code de langue ISO 639 alpha-2 ou alpha-3, ou sous-étiquettes de langue enregistrées jusqu'à 8 lettres alpha. Le code alpha-2 doit être utilisé si le code alpha-2 et alpha-3 est présent. Le champ de langue est insensible à la casse, mais Locale est toujours canalisé en minuscules.
Script- Code de script ISO 15924 alpha-4. Le champ de script est insensible à la casse, mais les paramètres régionaux sont toujours canoniques en fonction de la casse du titre.
Country (region)- Code de pays ISO 3166 alpha-2 ou indicatif régional UN M.49 numérique-3. Le champ country est insensible à la casse, mais les paramètres régionaux sont toujours canoniques en majuscules.
Variant- Toute valeur arbitraire utilisée pour indiquer une variation d'un paramètre régional. Lorsqu'il existe deux ou plusieurs valeurs de variante indiquant chacune sa propre sémantique, ces valeurs doivent être classées par ordre d'importance, le plus important en premier, séparé par un trait de soulignement ('_'). Le champ variant est sensible à la casse.
Extensions- Une carte des clés de caractère unique aux valeurs de chaîne, indiquant les extensions en dehors de l'identification de la langue. Les extensions de Locale implémentent la sémantique et la syntaxe des sous-étiquettes d'extension BCP 47 et des sous-étiquettes d'utilisation privée. Les extensions sont insensibles à la casse, mais Locale canonise toutes les clés et valeurs d'extension en minuscules.
Internalisation Java - Exemple - Détails des paramètres régionaux
Dans cet exemple, nous obtiendrons les paramètres régionaux par défaut et imprimerons ses détails. Créez ensuite une locale pour "fr" et imprimez ses détails.
I18NTester.java
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale locale =Locale.getDefault();
System.out.println("Default Locale Properties:\n");
System.out.println(locale.getDisplayCountry());
System.out.println(locale.getDisplayLanguage());
System.out.println(locale.getDisplayName());
System.out.println(locale.getISO3Country());
System.out.println(locale.getISO3Language());
System.out.println(locale.getLanguage());
System.out.println(locale.getCountry());
Locale frenchLocale = new Locale("fr","fr");
System.out.println("\nfr Locale Properties:\n");
System.out.println(frenchLocale.getDisplayCountry());
System.out.println(frenchLocale.getDisplayLanguage());
System.out.println(frenchLocale.getDisplayName());
System.out.println(frenchLocale.getISO3Country());
System.out.println(frenchLocale.getISO3Language());
System.out.println(frenchLocale.getLanguage());
System.out.println(frenchLocale.getCountry());
}
}
Production
Il imprimera le résultat suivant.
Default Locale Properties:
United States
English
English (United States)
USA
eng
en
US
fr Locale Properties:
France
French
French (France)
FRA
fra
fr
FR
Internalisation Java - Exemple - Langue d'affichage
Dans cet exemple, nous obtiendrons la langue d'affichage par locale passée en argument.
I18NTester.java
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale defaultLocale = Locale.getDefault();
Locale enLocale = new Locale("en", "US");
Locale frLocale = new Locale("fr", "FR");
Locale esLocale = new Locale("es", "ES");
System.out.println(defaultLocale.getDisplayLanguage(enLocale));
System.out.println(defaultLocale.getDisplayLanguage(frLocale));
System.out.println(defaultLocale.getDisplayLanguage(esLocale));
}
}
Production
Il imprimera le résultat suivant.
English
anglais
inglés
Internalisation Java - Classe ResourceBundle
La classe ResourceBundle est utilisée pour stocker du texte et des objets sensibles aux paramètres régionaux. En général, nous utilisons des fichiers de propriétés pour stocker du texte spécifique aux paramètres régionaux, puis les représenter à l'aide de l'objet ResourceBundle. Voici les étapes pour utiliser le fichier de propriétés spécifiques aux paramètres régionaux dans une application Java.
Étape 1: Créez des fichiers de propriétés.
Supposons que nous ayons besoin d'un fichier de propriétés pour les paramètres régionaux anglais. Créez ensuite un nom de fichier de propriétés XXX_en_US.properties où XXX est le nom du fichier et en_US représente les paramètres régionaux pour l'anglais (États-Unis).
Messages_en_US.properties
message=Welcome to TutorialsPoint.COM!
Créons maintenant un fichier de propriétés pour les paramètres régionaux français. Créez ensuite un nom de fichier de propriétés XXX_fr_FR.properties où XXX est le nom du fichier et fr_FR représente les paramètres régionaux du français (France).
Messages_fr_FR.properties
message=Bienvenue sur TutorialsPoint.COM!
Ici, vous pouvez comprendre que la clé est la même mais que la valeur est spécifique aux paramètres régionaux dans le fichier de propriétés.
Étape 2: créer un objet ResourceBundle
Créez un objet ResourceBundle avec le nom du fichier de propriétés et les paramètres régionaux en utilisant la syntaxe suivante.
ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);
Étape 3: obtenez la valeur de l'objet ResourceBundle.
Obtenez la valeur de l'objet ResourceBundle en passant la clé.
String value = bundle.getString("message");
Exemple
L'exemple suivant illustre l'utilisation d'objets ResourceBundle pour afficher des valeurs spécifiques aux paramètres régionaux à partir de fichiers de propriétés.
IOTester.java
import java.util.Locale;
import java.util.ResourceBundle;
public class I18NTester {
public static void main(String[] args) {
ResourceBundle bundle = ResourceBundle.getBundle("Messages", Locale.US);
System.out.println("Message in "+Locale.US +": "+bundle.getString("message"));
bundle = ResourceBundle.getBundle("Messages", Locale.FRANCE);
System.out.println("Message in "+Locale.FRANCE +": "+bundle.getString("message"));
}
}
Production
Il imprimera le résultat suivant.
Message in en_US: Welcome to TutorialsPoint.COM!
Message in fr_FR: Bienvenue sur TutorialsPoint.COM!
Remarques sur les conventions de dénomination
Voici les conventions de dénomination du fichier de propriétés.
Pour le fichier de propriétés mappé sur les paramètres régionaux par défaut, aucun préfixe n'est obligatoire. message_en_US.properties est équivalent à message.properties.
Pour le fichier de propriétés mappé sur les paramètres régionaux, le préfixe peut être attaché de deux manières. message_fr.properties est équivalent à message_fr_FR.properties.
Internalisation Java - Classe NumberFormat
La classe java.text.NumberFormat est utilisée pour formater les nombres et les devises selon un paramètre régional spécifique. Les formats numériques varient d'un pays à l'autre. Par exemple, au Danemark, les fractions d'un nombre sont séparées de la partie entière par une virgule alors qu'en Angleterre, elles utilisent un point comme séparateur.
Exemple - Format des nombres
Dans cet exemple, nous formalisons les nombres en fonction des paramètres régionaux américains et danois.
IOTester.java
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale enLocale = new Locale("en", "US");
Locale daLocale = new Locale("da", "DK");
NumberFormat numberFormat = NumberFormat.getInstance(daLocale);
System.out.println(numberFormat.format(100.76));
numberFormat = NumberFormat.getInstance(enLocale);
System.out.println(numberFormat.format(100.76));
}
}
Production
Il imprimera le résultat suivant.
100,76
100.76
Internalisation Java - Formater les devises
Dans cet exemple, nous formalisons les devises en fonction des paramètres régionaux américains et danois.
IOTester.java
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale enLocale = new Locale("en", "US");
Locale daLocale = new Locale("da", "DK");
NumberFormat numberFormat = NumberFormat.getCurrencyInstance(daLocale);
System.out.println(numberFormat.format(100.76));
numberFormat = NumberFormat.getCurrencyInstance(enLocale);
System.out.println(numberFormat.format(100.76));
}
}
Production
Il imprimera le résultat suivant.
kr 100,76
$100.76
Internalisation Java - Pourcentages de format
Dans cet exemple, nous mettons en forme les nombres au format pourcentage.
IOTester.java
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale enLocale = new Locale("en", "US");
NumberFormat numberFormat = NumberFormat.getPercentInstance(enLocale);
System.out.println(numberFormat.format(0.76));
}
}
Production
Il imprimera le résultat suivant.
76%
Internalisation Java - Définir la précision min / max
Dans cet exemple, nous définissons les chiffres minimum et maximum pour les entiers et les parties fractionnaires d'un nombre.
IOTester.java
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale enLocale = new Locale("en", "US");
NumberFormat numberFormat = NumberFormat.getInstance(enLocale);
numberFormat.setMinimumIntegerDigits(2);
numberFormat.setMaximumIntegerDigits(3);
numberFormat.setMinimumFractionDigits(2);
numberFormat.setMaximumFractionDigits(3);
System.out.println(numberFormat.format(12234.763443));
}
}
Production
Il imprimera le résultat suivant.
234.763
Internalisation Java - Définir le mode d'arrondi
Dans cet exemple, nous présentons le mode d'arrondi.
IOTester.java
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale enLocale = new Locale("en", "US");
NumberFormat numberFormat = NumberFormat.getInstance(enLocale);
numberFormat.setMinimumFractionDigits(0);
numberFormat.setMaximumFractionDigits(0);
System.out.println(numberFormat.format(99.50));
numberFormat.setRoundingMode(RoundingMode.HALF_DOWN);
System.out.println(numberFormat.format(99.50));
}
}
Production
Il imprimera le résultat suivant.
100
99
Internalisation Java - Analyse des nombres
Dans cet exemple, nous présentons l'analyse du nombre présent dans différents paramètres régionaux.
IOTester.java
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) throws ParseException {
Locale enLocale = new Locale("en", "US");
Locale daLocale = new Locale("da", "DK");
NumberFormat numberFormat = NumberFormat.getInstance(daLocale);
System.out.println(numberFormat.parse("100,76"));
numberFormat = NumberFormat.getInstance(enLocale);
System.out.println(numberFormat.parse("100,76"));
}
}
Production
Il imprimera le résultat suivant.
100.76
10076
Internalisation Java - Classe DecimalFormat
La classe java.text.DecimalFormat est utilisée pour le formatage des nombres selon le format personnalisé et selon les paramètres régionaux.
Exemple - Format des nombres
Dans cet exemple, nous formons des nombres en fonction d'un modèle donné.
IOTester.java
import java.text.DecimalFormat;
public class I18NTester {
public static void main(String[] args) {
String pattern = "####,####.##";
double number = 123456789.123;
DecimalFormat numberFormat = new DecimalFormat(pattern);
System.out.println(number);
System.out.println(numberFormat.format(number));
}
}
Production
Il imprimera le résultat suivant.
1.23456789123E8
1,2345,6789.12
Internalisation Java - Modèles de format
Ce qui suit est l'utilisation de caractères dans les modèles de formatage.
N ° Sr. | Classe et description |
---|---|
1 | 0 Pour afficher 0 si moins de chiffres sont présents. |
2 | # Pour afficher les zéros de début d'engagement de chiffres. |
3 | . Séparateur décimal. |
4 | , Séparateur de regroupement. |
5 | E Séparateur mantisse et exposant pour les formats exponentiels. |
6 | ; Séparateur de format. |
sept | - Préfixe numérique négatif. |
8 | % Affiche le nombre en pourcentage après avoir multiplié par 100. |
9 | ? Affiche le nombre en mille après avoir multiplié par 1000. |
dix | X Pour marquer le caractère comme préfixe / suffixe numérique. |
11 | ' Pour marquer la citation autour des caractères spéciaux. |
Dans cet exemple, nous formons des nombres en fonction de différents modèles.
IOTester.java
import java.text.DecimalFormat;
public class I18NTester {
public static void main(String[] args) {
String pattern = "###.###";
double number = 123456789.123;
DecimalFormat numberFormat = new DecimalFormat(pattern);
System.out.println(number);
//pattern ###.###
System.out.println(numberFormat.format(number));
//pattern ###.#
numberFormat.applyPattern("###.#");
System.out.println(numberFormat.format(number));
//pattern ###,###.##
numberFormat.applyPattern("###,###.##");
System.out.println(numberFormat.format(number));
number = 9.34;
//pattern 000.###
numberFormat.applyPattern("000.##");
System.out.println(numberFormat.format(number));
}
}
Production
Il imprimera le résultat suivant.
1.23456789123E8
1,2345,6789.12
Internalisation Java - DecimalFormat spécifique aux paramètres régionaux
Par défaut, l'objet DecimalFormat utilise les paramètres régionaux de la JVM. Nous pouvons changer les paramètres régionaux par défaut lors de la création de l'objet DecimalFormat à l'aide de la classe NumberFormat. Dans l'exemple ci-dessous, nous utiliserons le même modèle pour deux paramètres régionaux différents et vous pourrez repérer la différence dans la sortie.
IOTester.java
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
String pattern = "###.##";
double number = 123.45;
Locale enlocale = new Locale("en", "US");
Locale dalocale = new Locale("da", "DK");
DecimalFormat decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(enlocale);
decimalFormat.applyPattern(pattern);
System.out.println(decimalFormat.format(number));
decimalFormat = (DecimalFormat) NumberFormat.getNumberInstance(dalocale);
decimalFormat.applyPattern(pattern);
System.out.println(decimalFormat.format(number));
}
}
Production
Il imprimera le résultat suivant.
123.45
123,45
Internalisation Java - Classe DecimalFormatSymbols
En utilisant la classe DecimalFormatSymbols, les symboles de séparation par défaut, les symboles de séparation de groupe, etc. peuvent être modifiés. L'exemple suivant illustre la même chose.
IOTester.java
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
public class I18NTester {
public static void main(String[] args) {
String pattern = "#,###.###";
double number = 126473.4567;
DecimalFormat decimalFormat = new DecimalFormat(pattern);
System.out.println(decimalFormat.format(number));
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator(';');
decimalFormatSymbols.setGroupingSeparator(':');
decimalFormat = new DecimalFormat(pattern, decimalFormatSymbols);
System.out.println(decimalFormat.format(number));
}
}
Production
Il imprimera le résultat suivant.
126,473.457
126:473;457
Internalisation Java - Regroupement des chiffres
En utilisant la méthode setGroupingSize () de DecimalFormat, le regroupement par défaut des nombres peut être modifié. L'exemple suivant illustre la même chose.
IOTester.java
import java.text.DecimalFormat;
public class I18NTester {
public static void main(String[] args) {
double number = 121223232473.4567;
DecimalFormat decimalFormat = new DecimalFormat();
System.out.println(number);
System.out.println(decimalFormat.format(number));
decimalFormat.setGroupingSize(4);
System.out.println(decimalFormat.format(number));
}
}
Production
Il imprimera le résultat suivant.
1.212232324734567E11
121,223,232,473.457
1212,2323,2473.457
Internalisation Java - Classe DateFormat
La classe java.text.DateFormat met en forme les dates selon les paramètres régionaux. Comme différents pays utilisent différents formats pour afficher les dates. Cette classe est extrêmement utile pour traiter les dates dans l'internalisation de l'application. L'exemple suivant montre comment créer et utiliser la classe DateFormat.
IOTester.java
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) {
Locale locale = new Locale("da","DK");
DateFormat dateFormat = DateFormat.getDateInstance();
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT, locale);
System.out.println(dateFormat.format(new Date()));
}
}
Production
Il imprimera le résultat suivant.
Nov 29, 2017
29-11-2017
Internalisation Java - Formatage des dates
La classe DateFormat fournit différents formats pour formater la date. Voici la liste de certains des formats.
DateFormat.DEFAULT
DateFormat.SHORT
DateFormat.MEDIUM
DateFormat.LONG
DateFormat.FULL
Dans l'exemple suivant, nous montrerons comment utiliser différents formats.
IOTester.java
import java.text.DateFormat;
import java.util.Date;
public class I18NTester {
public static void main(String[] args) {
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.DEFAULT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateInstance(DateFormat.SHORT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateInstance(DateFormat.LONG);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateInstance(DateFormat.FULL);
System.out.println(dateFormat.format(new Date()));
}
}
Production
Il imprimera le résultat suivant.
Nov 29, 2017
11/29/17
Nov 29, 2017
November 29, 2017
Wednesday, November 29, 2017
Internalisation Java - Temps de formatage
La classe DateFormat fournit différents formats pour formater l'heure. La méthode DateFormat.getTimeInstance () doit être utilisée. Voir l'exemple ci-dessous.
Dans l'exemple suivant, nous montrerons comment utiliser différents formats pour formater l'heure.
IOTester.java
import java.text.DateFormat;
import java.util.Date;
public class I18NTester {
public static void main(String[] args) {
DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.DEFAULT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getTimeInstance(DateFormat.SHORT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getTimeInstance(DateFormat.MEDIUM);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getTimeInstance(DateFormat.LONG);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getTimeInstance(DateFormat.FULL);
System.out.println(dateFormat.format(new Date()));
}
}
Production
Il imprimera le résultat suivant.
4:11:21 PM
4:11 PM
4:11:21 PM
4:11:21 PM IST
4:11:21 PM IST
Internalisation Java - Formatage de la date et de l'heure
La classe DateFormat fournit différents formats pour formater la date et l'heure ensemble. La méthode DateFormat.getDateTimeInstance () doit être utilisée. Voir l'exemple ci-dessous.
Dans l'exemple suivant, nous montrerons comment utiliser différents formats pour formater la date et l'heure.
IOTester.java
import java.text.DateFormat;
import java.util.Date;
public class I18NTester {
public static void main(String[] args) {
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
System.out.println(dateFormat.format(new Date()));
dateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println(dateFormat.format(new Date()));
}
}
Production
Il imprimera le résultat suivant.
Nov 29, 2017 4:16:13 PM
11/29/17 4:16 PM
Nov 29, 2017 4:16:13 PM
November 29, 2017 4:16:13 PM IST
Wednesday, November 29, 2017 4:16:13 PM IST
Internalisation Java - Classe SimpleDateFormat
La classe java.text.SimpleDateFormat met en forme les dates selon le modèle donné. Il est également utilisé pour analyser les dates de la chaîne où la chaîne contient la date au format mentionné. Consultez l'exemple suivant d'utilisation de la classe SimpleDateFormat.
IOTester.java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class I18NTester {
public static void main(String[] args) throws ParseException {
String pattern = "dd-MM-yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = new Date();
System.out.println(date);
System.out.println(simpleDateFormat.format(date));
String dateText = "29-11-2017";
date = simpleDateFormat.parse(dateText);
System.out.println(simpleDateFormat.format(date));
}
}
Production
Il imprimera le résultat suivant.
Wed Nov 29 17:01:22 IST 2017
29-11-2017
29-11-2017
Internalisation Java - SimpleDateFormat spécifique aux paramètres régionaux
Les paramètres régionaux peuvent être utilisés pour créer un formatage spécifique aux paramètres régionaux sur un modèle dans la classe SimpleDateFormat. Consultez l'exemple suivant d'utilisation de la classe SimpleDateFormat spécifique aux paramètres régionaux.
IOTester.java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class I18NTester {
public static void main(String[] args) throws ParseException {
Locale locale = new Locale("da", "DK");
String pattern = "EEEEE MMMMM yyyy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = new Date();
System.out.println(date);
System.out.println(simpleDateFormat.format(date));
simpleDateFormat = new SimpleDateFormat(pattern,locale);
System.out.println(simpleDateFormat.format(date));
}
}
Production
Il imprimera le résultat suivant.
Wed Nov 29 17:48:14 IST 2017
Wednesday November 2017
onsdag november 2017
Internalisation Java - Classe DecimalFormatSymbols
En utilisant la classe DecimalFormatSymbols, les symboles de séparation par défaut, les symboles de séparation de groupe, etc. peuvent être modifiés. L'exemple suivant illustre la même chose.
IOTester.java
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
public class I18NTester {
public static void main(String[] args) {
String pattern = "#,###.###";
double number = 126473.4567;
DecimalFormat decimalFormat = new DecimalFormat(pattern);
System.out.println(decimalFormat.format(number));
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator(';');
decimalFormatSymbols.setGroupingSeparator(':');
decimalFormat = new DecimalFormat(pattern, decimalFormatSymbols);
System.out.println(decimalFormat.format(number));
}
}
Production
Il imprimera le résultat suivant.
126,473.457
126:473;457
Internalisation Java - Modèles de format de date
Ce qui suit est l'utilisation de caractères dans les modèles de formatage de date.
N ° Sr. | Classe et description |
---|---|
1 | G Pour afficher Era. |
2 | y Pour afficher l'année. Valeurs valides yy, yyyy. |
3 | M Pour afficher le mois. Valeurs valides MM, MMM ou MMMMM. |
4 | d Pour afficher le jour du mois. Valeurs valides d, dd. |
5 | h Pour afficher l'heure du jour (1-12 AM / PM). Valeur valide hh. |
6 | H Pour afficher l'heure du jour (0-23). Valeur valide HH. |
sept | m Pour afficher les minutes de l'heure (0-59). Valeur valide mm. |
8 | s Pour afficher les secondes des minutes (0-59). Valeur valide ss. |
9 | S Pour afficher des millisecondes de minute (0-999). Valeur valide SSS. |
dix | E Pour afficher le jour de la semaine (par exemple, lundi, mardi, etc.) |
11 | D Pour afficher le jour de l'année (1-366). |
12 | F Pour afficher le jour de la semaine dans le mois (par exemple le 1er jeudi de décembre). |
13 | w Pour afficher la semaine dans l'année (1-53). |
14 | W Pour afficher la semaine dans le mois (0-5) |
15 | a Pour afficher AM / PM |
16 | k Pour afficher l'heure dans la journée (1-24). |
17 | K Pour afficher l'heure dans la journée, AM / PM (0-11). |
18 | z Pour afficher le fuseau horaire. |
Dans cet exemple, nous formalisons les dates en fonction de différents modèles.
IOTester.java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class I18NTester {
public static void main(String[] args) throws ParseException {
String pattern = "dd-MM-yy";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = new Date();
System.out.println(simpleDateFormat.format(date));
pattern = "MM-dd-yyyy";
simpleDateFormat = new SimpleDateFormat(pattern);
System.out.println(simpleDateFormat.format(date));
pattern = "yyyy-MM-dd HH:mm:ss";
simpleDateFormat = new SimpleDateFormat(pattern);
System.out.println(simpleDateFormat.format(date));
pattern = "EEEEE MMMMM yyyy HH:mm:ss.SSSZ";
simpleDateFormat = new SimpleDateFormat(pattern);
System.out.println(simpleDateFormat.format(date));
}
}
Production
Il imprimera le résultat suivant.
29-11-17
11-29-2017
2017-11-29 18:47:42
Wednesday November 2017 18:47:42.787+0530
Internalisation Java - UTC
UTC signifie temps universel coordonné. C'est la norme de temps et est couramment utilisé dans le monde entier. Tous les fuseaux horaires sont calculés comparativement avec UTC comme décalage. Par exemple, l'heure à Copenhague, au Danemark, est UTC + 1 signifie l'heure UTC plus une heure. Il est indépendant des économies de lumière du jour et doit être utilisé pour stocker la date et l'heure dans les bases de données.
Conversion des fuseaux horaires
L'exemple suivant présentera la conversion de divers fuseaux horaires. Nous imprimerons l'heure du jour et l'heure en millisecondes. Le premier variera et le second restera le même.
IOTester.java
import java.text.ParseException;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class I18NTester {
public static void main(String[] args) throws ParseException {
Calendar date = new GregorianCalendar();
date.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
date.set(Calendar.HOUR_OF_DAY, 12);
System.out.println("UTC: " + date.get(Calendar.HOUR_OF_DAY));
System.out.println("UTC: " + date.getTimeInMillis());
date.setTimeZone(TimeZone.getTimeZone("Europe/Copenhagen"));
System.out.println("CPH: " + date.get(Calendar.HOUR_OF_DAY));
System.out.println("CPH: " + date.getTimeInMillis());
date.setTimeZone(TimeZone.getTimeZone("America/New_York"));
System.out.println("NYC: " + date.get(Calendar.HOUR_OF_DAY));
System.out.println("NYC: " + date.getTimeInMillis());
}
}
Production
Il imprimera le résultat suivant.
UTC: 12
UTC: 1511956997540
CPH: 13
CPH: 1511956997540
NYC: 7
NYC: 1511956997540
Fuseaux horaires disponibles
L'exemple suivant présentera les fuseaux horaires disponibles avec le système.
IOTester.java
import java.text.ParseException;
import java.util.TimeZone;
public class I18NTester {
public static void main(String[] args) throws ParseException {
String[] availableIDs = TimeZone.getAvailableIDs();
for(String id : availableIDs) {
System.out.println("Timezone = " + id);
}
}
}
Production
Il imprimera le résultat suivant.
Timezone = Africa/Abidjan
Timezone = Africa/Accra
...
Timezone = VST
Internalisation Java - Conversion Unicode de / vers une chaîne
En java, le texte est stocké en interne au format Unicode. Si l'entrée / sortie est dans un format différent, une conversion est nécessaire.
Conversion
L'exemple suivant présente la conversion d'une chaîne Unicode en octet UTF8 [] et de l'octet UTF8 [] en octet Unicode [].
IOTester.java
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.text.ParseException;
public class I18NTester {
public static void main(String[] args) throws ParseException, UnsupportedEncodingException {
String unicodeString = "\u00C6\u00D8\u00C5" ;
//convert Unicode to UTF8 format
byte[] utf8Bytes = unicodeString.getBytes(Charset.forName("UTF-8"));
printBytes(utf8Bytes, "UTF 8 Bytes");
//convert UTF8 format to Unicode
String converted = new String(utf8Bytes, "UTF8");
byte[] unicodeBytes = converted.getBytes();
printBytes(unicodeBytes, "Unicode Bytes");
}
public static void printBytes(byte[] array, String name) {
for (int k = 0; k < array.length; k++) {
System.out.println(name + "[" + k + "] = " + array[k]);
}
}
}
Production
Il imprimera le résultat suivant.
UTF 8 Bytes[0] = -61
UTF 8 Bytes[1] = -122
UTF 8 Bytes[2] = -61
UTF 8 Bytes[3] = -104
UTF 8 Bytes[4] = -61
UTF 8 Bytes[5] = -123
Unicode Bytes[0] = -58
Unicode Bytes[1] = -40
Unicode Bytes[2] = -59
Internalisation Java - Conversion Unicode de / vers lecteur / enregistreur
Les classes Reader et Writer sont des classes de flux orientées caractères. Ceux-ci peuvent être utilisés pour lire et convertir des caractères Unicode.
Conversion
L'exemple suivant présente la conversion d'une chaîne Unicode en octet UTF8 [] et de l'octet UTF8 [] en octet Unicode [] à l'aide des classes Reader et Writer.
IOTester.java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.nio.charset.Charset;
import java.text.ParseException;
public class I18NTester {
public static void main(String[] args) throws ParseException, IOException {
String input = "This is a sample text" ;
InputStream inputStream = new ByteArrayInputStream(input.getBytes());
//get the UTF-8 data
Reader reader = new InputStreamReader(inputStream, Charset.forName("UTF-8"));
//convert UTF-8 to Unicode
int data = reader.read();
while(data != -1){
char theChar = (char) data;
System.out.print(theChar);
data = reader.read();
}
reader.close();
System.out.println();
//Convert Unicode to UTF-8 Bytes
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Writer writer = new OutputStreamWriter(outputStream, Charset.forName("UTF-8"));
writer.write(input);
writer.close();
String out = new String(outputStream.toByteArray());
System.out.println(out);
}
}
Production
Il imprimera le résultat suivant.
This is a sample text
This is a sample text
Impression