In diesem Dokument werden die folgenden Elemente als Zusammenfassung des Java Gold-Lernens zusammengefasst. (Auch für diejenigen, die Java Gold lernen oder etwas über Lokalisierung wissen möchten.)
java.util.Locale
Zeigen Sie die Notationsregeln für Dinge an, die sich je nach Sprache und Land unterscheiden.
Verwenden Sie das Gebietsschema, wenn Sie die Anzeige für jedes Land ändern möchten, in dem die Anwendung verwendet wird. (Die Zeichen werden je nach Land, in dem die App verwendet wird, usw. in Japanisch und Englisch unterteilt.)
Es gibt drei Hauptmethoden zum Erstellen von Instanzen.
Konstrukteur | Inhalt |
---|---|
Local(String language, String country) | Argumentationssprache/Objekt aus Ländercode generieren |
//Instanzgenerierung durch neu
//ja ・ en: Sprachnamencode | JP ・ US: Ländernamencode
Locale localeJp = new Locale("ja","JP"); //Japanisches Gebietsschema
Locale localeUs = new Locale("en","US"); //Amerikanisches Gebietsschema
//Instanzgenerierung mit Gebietsschema-Klassenkonstanten
Locale localeJp = Locale.JAPAN;
Locale localeUs = Locale.US;
// getDefault()Instanzgenerierung nach Methode
//Bei der Ausführung in Japan wird eine japanische Gebietsschemainstanz generiert
Locale localeJp = Locale.getDefault();
Methode | Inhalt |
---|---|
static getDefault() | Ruft den aktuellen Wert des Standardgebietsschemas ab |
final String getDisplayCountry() | Geben Sie den Ländernamen des Gebietsschemas zurück |
final String getDisplayLanguage() | Gibt den Sprachnamen des Gebietsschemas zurück |
String getCountry() | Geben Sie den Ländercode des Gebietsschemas zurück |
String getLanguage() | Geben Sie den Sprachnamencode des Gebietsschemas zurück |
// ja_JP wird gespeichert (wenn das Betriebssystem Japan ist)
Locale locale = Locale.getDefault();
//Japan wird gespeichert
String country = locale.getDisplayCountry();
//Japanisch wird gespeichert
String language = locale.getDisplayLanguage();
//JP wird gespeichert
String country_code = locale.getCountry();
//ja ist gespeichert
String language_code = locale.getLanguage();
//Anmerkungen: Andere Instanziierungsmethoden
Locale locale = new Locale.Builder().setLanguage("ja")
.setScript("Jpan")
.setRegion("JP")
.build();
// setScript(): Argument ist ISO 15924 alpha-4 Skriptcode (siehe Javadoc)
// build():Locale.Erstellen Sie ein lokales Objekt mit einer Builder-Methode
java.util.ResourceBundle
Entsprechen je nach Gebietsschema unterschiedlichen Notationsregeln für jede Sprache und jedes Land. Dies ermöglicht es, je nach Gebietsschema zwischen japanischer und englischer Notation zu wechseln.
Die wichtigsten verwendeten Methoden sind wie folgt.
Methode | Inhalt |
---|---|
boolean containsKey(String key) | Gibt true zurück, wenn die Ressource den durch das Argument angegebenen Schlüssel hat |
final Object getObject | Gibt das Objekt zurück, das dem durch das Argument angegebenen Schlüssel zugeordnet ist |
final String getString(String key) | Gibt die Zeichenfolge zurück, die dem durch das Argument angegebenen Schlüssel zugeordnet ist |
final String[] getStringArray(String key) | Gibt ein Array von Zeichenfolgen zurück, die dem durch das Argument angegebenen Schlüssel zugeordnet sind |
Set |
Geben Sie alle im Bundle enthaltenen Schlüssel zurück |
Darüber hinaus gibt es folgende Unterklassen.
Unterklasse | Inhalt |
---|---|
ListResourceBundle | Verwalten Sie Ressourcen für Ihr Gebietsschema in einer praktischen und benutzerfreundlichen Liste |
PropertyResourceBuilder | Verwalten Sie Ressourcen für Gebietsschemas mithilfe einer Reihe statischer Zeichenfolgen aus der Eigenschaftendatei |
Die Definitionsregeln bei dieser Verwendung lauten wie folgt.
- Definitionsmethode
Erstellen Sie eine öffentliche Klasse, die ListResourceBundle erbt
Überschreiben Sie die Methode getContents (), um eine Liste der Ressourcen in einem Array zu erstellen
Ressourcen werden als Array mit Schlüsseln und Werten als Elementen erstellt
[Zitat](https://www.amazon.co.jp/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E8%AA%8D%E5% AE% 9A% E8% B3% 87% E6% A0% BC% E6% 95% 99% E7% A7% 91% E6% 9B% B8-Java% E3% 83% 97% E3% 83% AD% E3% 82% B0% E3% 83% A9% E3% 83% 9E-Gold-SE-8-ebook / dp / B01J1LPKJY / ref = sr_1_2? __Mk_ja_JP =% E3% 82% AB% E3% 82% BF% E3% 82 % AB% E3% 83% 8A & dchild = 1 & keywords = gold + java & qid = 1593530267 & sr = 8-2)
** ▼ Implementierungsbeispiel **
Resource.java
public class Resource extends ListResourceBundle {
public Object[][] getContents() {
Object[][] contents = {
{"apple", "Apfel"},
{"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;
}
}
Gebietsschema durch Festlegen von base name_language code_country code.java Auf die Datei der Sprache, die dem Objekt von entspricht, wird verwiesen.
Für die Standardinstanz des Gebietsschemas wird auf die Basisnamenressource verwiesen. Wenn nur der Sprachcode für die Instanz des Gebietsschemas angegeben ist, muss nur der Sprachcode nach dem Basisnamen angegeben werden.
Main.java
//Das Ausgabeergebnis ist wie folgt
//Apfel:Orange
// apple:orange
class Main {
public static void main(String[] args) {
Locale localeJa = Locale.JAPAN;
Locale localeUs = Locale.US;
//Wenn das zweite Argument nicht angegeben wird, geben Sie den Standardort an.
List<Locale> locales =
new ArrayList<Locale>(Arrays.asList(localeJa, localeUs));
for(Locale locale : locales) {
//Paketnamen.Geben Sie den Dateinamen an
ResourceBundle rb =
ResourceBundle.getBundle("resource.Resource", locale);
//Wenn Sie etwas anderes als String erhalten möchten, wandeln Sie es mit der Methode getObject um.
System.out.println(rb.getString("apple") + ":" + rb.getString("orange"));
}
}
}
Die Definitionsregeln bei dieser Verwendung lauten wie folgt.
** ▼ Implementierungsbeispiel **
Source.properties
apple=J_apple
orange=J_orange
Source_en_US.properties
apple=U_apple
orange=U_orange
Main.java
//Ausgabeergebnis
// 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) {
//Geben Sie nur den Dateinamen an
ResourceBundle rb =
ResourceBundle.getBundle("Source" ,locale ,urlLoader);
System.out.println(rb.getString("apple") + rb.getString("orange"));
}
}
}
Recommended Posts