Mesures Java Gold: localisation

introduction

Cet article résume les éléments suivants comme un résumé de l'apprentissage de Java Gold. (Aussi pour ceux qui apprennent Java Gold ou veulent en savoir plus sur la localisation.)

Qu'est-ce qu'un lieu?

java.util.Locale

Affichez les règles de notation pour les éléments qui diffèrent selon la langue et le pays.

Exemple: unité, symbole, date, devise, etc.

Utilisez les paramètres régionaux lorsque vous souhaitez modifier l'affichage de chaque pays dans lequel l'application est utilisée. (Les caractères sont divisés en japonais et en anglais selon le pays où l'application est utilisée, etc.)

Il existe trois méthodes principales pour créer des instances.

■ Principaux constructeurs et méthodes

constructeur Contenu
Local(String language, String country) Langue d'argumentation/Générer un objet à partir du code du pays
//Génération d'instance par nouveau
//ja ・ fr: Code du nom de la langue | JP ・ US: Code du nom du pays
Locale localeJp = new Locale("ja","JP");  //Paramètres régionaux japonais
Locale localeUs = new Locale("en","US");  //Lieu américain

//Génération d'instances avec des constantes de classe locale
Locale localeJp = Locale.JAPAN;
Locale localeUs = Locale.US;

// getDefault()Génération d'instance par méthode
//Lorsqu'elle est exécutée au Japon, une instance de paramètres régionaux japonais est générée
Locale localeJp = Locale.getDefault();
Méthode Contenu
static getDefault() Obtenir la valeur actuelle de la langue par défaut
final String getDisplayCountry() Renvoie le nom du pays de la langue
final String getDisplayLanguage() Renvoie le nom de la langue des paramètres régionaux
String getCountry() Renvoie le code du pays de la locale
String getLanguage() Renvoie le code du nom de la langue du paramètre régional
// ja_JP est stocké (lorsque le système d'exploitation est le Japon)
Locale locale = Locale.getDefault();

//Le Japon est stocké
String country = locale.getDisplayCountry();

//Le japonais est stocké
String language = locale.getDisplayLanguage();

//JP est stocké
String country_code = locale.getCountry();

//ja est stocké
String language_code = locale.getLanguage();

//Remarques: autres méthodes d'instanciation
Locale locale = new Locale.Builder().setLanguage("ja")
                                    .setScript("Jpan")
                                    .setRegion("JP")
                                    .build();
// setScript(): L'argument est ISO 15924 alpha-4 Code de script (voir Javadoc)
// build():Locale.Créer un objet local avec une méthode Builder

Faisceau de ressources

java.util.ResourceBundle

Correspondent à des règles de notation différentes pour chaque langue et pays selon les paramètres régionaux. Cela permet de basculer entre la notation japonaise et la notation anglaise en fonction des paramètres régionaux.

Les principales méthodes utilisées sont les suivantes.

Méthode Contenu
boolean containsKey(String key) Renvoie true si la ressource a la clé spécifiée par l'argument
final Object getObject Renvoie l'objet associé à la clé spécifiée par l'argument
final String getString(String key) Renvoie la chaîne de caractères associée à la clé spécifiée par l'argument
final String[] getStringArray(String key) Renvoie un tableau de chaînes de caractères associé à la clé spécifiée par l'argument
Set keySet() Retournez toutes les clés incluses dans le lot

En outre, il existe les sous-classes suivantes.

Sous-classe Contenu
ListResourceBundle Gérez les ressources de votre région dans une liste pratique et facile à utiliser
PropertyResourceBuilder Gérer les ressources pour les paramètres régionaux à l'aide d'un ensemble de chaînes statiques du fichier de propriétés

■ Lors de l'utilisation de ListResourceBundle

Les règles de définition lors de son utilisation sont les suivantes.

  • Méthode de définition

** ▼ Exemple de mise en œuvre **

Resource.java


public class Resource extends ListResourceBundle {

	public Object[][] getContents() {
		Object[][] contents = {
				{"apple", "Pomme"},
				{"orange", "Orange"}
		};
		return contents;
	}
}

Resource_en_US.java


public class Resource_en extends ListResourceBundle {

	protected Object[][] getContents() {
		Object[][] contents = {
				{"apple", "apple"},
				{"orange", "orange"}
		};
		return contents;
	}
}

Paramètres régionaux en définissant le nom de base_langue code_code pays.java Le fichier de la langue correspondant à l'objet de est référencé.

Pour l'instance locale par défaut, la ressource de nom de base est référencée. Si seul le code de langue est spécifié pour l'instance des paramètres régionaux, seul le code de langue doit être spécifié après le nom de base.

Main.java



//Le résultat de sortie est le suivant
//Pomme:Orange
// apple:orange

class Main {
	public static void main(String[] args) {

		Locale localeJa = Locale.JAPAN;
		Locale localeUs = Locale.US;

		//Si le deuxième argument n'est pas spécifié, spécifiez la localisation par défaut.
		List<Locale> locales =
				new ArrayList<Locale>(Arrays.asList(localeJa, localeUs));

		for(Locale locale : locales) {
			//nom du paquet.Spécifiez le nom du fichier
			ResourceBundle rb =
				ResourceBundle.getBundle("resource.Resource", locale);

			//Si vous souhaitez obtenir autre chose que String, transtypez-le à l'aide de la méthode getObject.
			System.out.println(rb.getString("apple") + ":" + rb.getString("orange"));
		}
	}
}

■ Lors de l'utilisation de PropertyResourceBuilder

Les règles de définition lors de son utilisation sont les suivantes.

** ▼ Exemple de mise en œuvre **

image.png

Source.properties


apple=J_apple
orange=J_orange

Source_en_US.properties


apple=U_apple
orange=U_orange

Main.java



//Résultat de sortie
// J_appleJ_orange
// U_appleU_orange

class Main {
	public static void main(String[] args) throws MalformedURLException {

        File dicDir = Paths.get(".\\resource").toFile();

        URLClassLoader urlLoader;
        urlLoader = new URLClassLoader(new URL[]{dicDir.toURI().toURL()});

		Locale localeJp = Locale.JAPAN;
		Locale localeUs = Locale.US;

		List<Locale> locales =
				new ArrayList<Locale>(Arrays.asList(localeJp, localeUs));

		for (Locale locale : locales) {
			//Spécifiez uniquement le nom du fichier
			ResourceBundle rb =
					ResourceBundle.getBundle("Source" ,locale ,urlLoader);

			System.out.println(rb.getString("apple") + rb.getString("orange"));

		}
	}
}

Les références

Recommended Posts

Mesures Java Gold: localisation
Mesures Java Gold: Format
contre-mesures d'erreur java
Contre-mesures pour OutOfMemoryError en java
Notes sur l'examen Java8 Gold
J'ai commencé Java Gold (Chapitre 1-1)
En passant Java Gold SE 8
J'ai pris Java SE8 Gold.
Reçu un programmeur Java certifié Oracle, Gold SE 8
Histoire du passage de Java Gold SE8
Java
Ce que j'ai appris avec Java Gold