1. Benennung von Ressourcendateien
Das Namensformat internationaler Ressourcendateien lautet wie folgt:
BASENAME_LANGUAGE_COUNTRY.PROPERTIES BASENAME_LAUGE.PROPERTIES BASENAME.PROPERTIES
Wo Basisame der Grundname der Ressourcendatei ist, muss Sprache und Land die von Java unterstützte Sprache und Land sein. Die Sprach- und Landcodes, die Java -Unterstützung erhalten, sind wie folgt:
Locale [] Orte = Locale.GetAVailableLocales (); für (Gebietsschema: Orte) {System.out.println ("Land:" + local.getCountry () + ", Sprache:" + local.getLanguage ()); }2. Konfiguration und Erwerb von Ressourcendateien
Erstellen Sie eine neue Ressourcendatei. In einer chinesischen Umgebung muss der Wert in der Ressourcendatei ASCII konvertiert werden. Sie können native2ascii nach dem Laufen eingeben. Darüber hinaus verwendet dieser Artikel das Eclipse-Attributdatei-Plug-In, sodass er direkt in Chinesisch angezeigt wird. Die Eigenschaftendatei ist wie folgt konfiguriert:
info_en_us.properties
userername = zhangsaninfo_zh_cn.propertiesusername = zhangsaninfo_zh.propertiesusername = li si sis Pass
Wenn Sie den Wert in der Eigenschaftendatei lesen müssen, müssen Sie außerdem Konstanten in der Datei Struts-config.xml konfigurieren.
<!-Verwenden Sie den Namen des Ressourcendateins, wobei der Wertwert den Grundnamen der Ressourcendatei darstellt-> <Constant name = "struts.custom.i18n.resources" value = "info"> </konstant>
Die Möglichkeit, Ressourcendateien auf der Seite zu erhalten, besteht darin, das Struts -Tag <S: text/> wie unten gezeigt zu verwenden:
<!-Ressourcendatei erhält den Schlüsselwert-> <s: text name = "userername"/> <s: text name = "password"/> <s: text name = "mail"/>
Wenn Sie den Schlüsselwert in der Formularform erhalten, lautet die Methode wie folgt:
<!- wobei der Schlüsselwert der Schlüsselwert in der Ressourcendatei ist, und die Funktion besteht darin, dem Eingabefeld einen Labelnamen hinzuzufügen, der dem Attributwert des Etiketts entspricht. In Konstanten kann der Schlüsselwert jedoch nicht aus der Attributdatei erhalten werden. -> <s: textfield name = "login.username" key = "userername"> </s: textField>
Beachten Sie auch, dass wenn der Konstante <konstantes Name = "Struts.ui.theme" value = "Simple"/> verwendet wird, der Schlüsselwert in <s: textField/> den entsprechenden Wert aus der Attributdatei nicht erhalten kann.
Die letzte Seite zeigt die Ergebnisse wie folgt:
Aus den obigen Konfigurationsdateien können wir die Quelle der Werte dieser drei Werte sehen. Daraus können wir sehen, dass die Suchreihenfolge der Ressourcendatei wie folgt lautet:
Suchen Sie zunächst nach dem relevanten Schlüsselwert von BasisName_Language_Country.Properties. Wenn nicht, suchen Sie nach dem relevanten Schlüsselwert in BasiName_Language.properties. Wenn nicht, suchen Sie nach dem relevanten Schlüsselwert in BasiName.Properties. Wenn nicht, suchen Sie nach dem relevanten Schlüsselwert. Wenn nicht, wird es als Name angezeigt.
3. Verwendung von Platzhaltern in Attributdateien
Der Konfigurationsinhalt der Eigenschaftendatei lautet wie folgt:
userername = zhang san, {0}, {1}
Verwenden Sie das Tag <S: Param> Wert </s: Param>, um die Parameter in JSP zu übergeben.
<s: text name = "userername"> <s: param> hello </s: param> <s: param> willkommen! </s: param> </s: text>
4. Anwendungsressourcendateien in Aktion
Um Ressourcendateien in Aktion zu verwenden, müssen Sie die ActionVort -Klasse erben. Die ActionVort -Klasse implementiert die beiden Schnittstellen: TextProvider und LocalEProvider. Der TextProvider bietet eine Methode, um die Methode zur Ressourcendateiwert zu erhalten, während die Lokalprovider -Schnittstelle nur eine GetLocale () -Methode zum Erhalt von Gebietsschema hat.
Ändern Sie die Konfigurationsdatei info_zh_cn.properties:
userername = zhang san, {0}, {1} userernameError = Der Benutzername kann nicht leer sein! Bitte bestätigen Sie!In Aktion ist die Methode zum Erhalten der Eigenschaftsdatei wie folgt:
this.getext ("userernameError");Verwenden Sie Platzhalter in Aktion, um zu operieren. Der Code ist wie folgt:
this.getText ("Benutzername", neuer String [] {"Hallo", "Willkommen"});5. Paketweite Ressourcendateien
Die Aktion unter diesem Paket und im Unterpackung kann auf die Ressourcendatei zugreifen. Die Platzierung befindet sich unter einem bestimmten Paket, und das Benennungsformat lautet: package_language_country.properties. Wobei das Paket ein festes Format ist. Die Konfigurationsdatei -Paket_ZH_CN.Properties lautet wie folgt:
Benutzername = Benutzername unter dem Paketbereich
In der Action unter dem Paket können Sie GetText ("Benutzername") verwenden, um es zu erhalten.
6. Ressourcendateien im Aktionsumfang
Sie können eine Eigenschaftsdatei für eine separate Aktion angeben und in ein Verzeichnis der gleichen Ebene wie eine Aktion platzieren. Das Namensformat ist
ActionName_Language_Country.Properties
.
Konfigurieren Sie die Eigenschaftendatei des Aktionsumfangs:
Benutzername = Benutzername innerhalb des Aktionsbereichs
Die Methode GetText ("Benutzername") wird auch in der Aktion verwendet, um den Wert zu erhalten.
7. Die Ladereihenfolge von Ressourcendateien
Für die Verwendung des GetText -Wertes für Aktion, wenn beide Eigenschaftsdateien innerhalb des Aktionsbereichs, Eigenschaftendateien im Paketumfang und die globalen Eigenschaftsdateien vorhanden sind, lautet die Ladereihenfolge wie folgt:
Erstens, ob der Schlüsselwert in der Attributdatei in der angegebenen Aktion vorhanden ist. Wenn es existiert, wird der Wert genommen. Wenn es nicht vorhanden ist, suchen Sie nach der Frage, ob die Paketbereichsattributdatei mit dem angegebenen Schlüsselwert im Paket der aktuellen Aktion der oberen Ebene vorhanden ist. Wenn es nicht vorhanden ist, suchen Sie weiter im Paket der vorherigen Ebene. Wenn es nicht gefunden wurde, suchen Sie, ob der angegebene Schlüsselwert in der globalen Attributdatei vorhanden ist. Wenn der angegebene Schlüsselwert besteht, wird der dem Schlüsselwert entsprechende Wert herausgenommen. Wenn es nicht existiert, ist der Standardwert der Schlüsselwert.
Wenn in der globalen Attributdatei mehrere Ressourcendateien vorhanden sind, müssen Sie außerdem in der Reihenfolge von BasisName_Language_Country, Baserame_Guanguage und BasName suchen.
8. Ressourcendateien auf der Seite erhalten
(1) Verwenden Sie <S: I18N/>, um auf eine Ressourcendatei zuzugreifen.
Der Code ist wie folgt:
<!-Verwenden Sie das i18n-Tag, um die Attributdatei abzurufen-> <!-Die Ressourcendatei im Paket Scope erhalten-> <s: i18n name = "com/struts/package"> <s: text name = "userername"> </s: text> </s: i18n> <! <s: text name = "userername"> </s: text> </s: i18n>
(2) Verwendung von <fmt/>
JSTL enthält Internationalisierungs- und Formatierungs -Tags. Durch die Verwendung von Internationalisierungs -Tags ermöglicht eine JSP -Seite, die Seite auszugeben, in verschiedenen Sprachen entsprechend dem Bereich, in dem sich der Besucher befindet. Hier müssen Sie Maven verwenden, um Abhängigkeits -JAR -Pakete hinzuzufügen. Die Konfigurationsdatei lautet wie folgt:
<!-Einführung von JSTL-Tag-Bibliothek-> <De vorstellen> <gruppe> JSTL </Groupid> <artifactId> JSTL </artifactId> <version> 1.2 </Version> </abhängig>
Verwenden Sie das FMT -Tag auf der JSP -Seite und der Anwendungscode lautet wie folgt:
<!-Mit JSTL Tag FMT-> <!-Das Einstellen des Gebietsschemas überschreibt die vom Client übergebenen Beschwerden-> <fmt: setLocale value = "zh_cn" scope = "request"/> <!-Laden Sie einen Ressourcensatz und speichern Sie es in der EL-Variablen. Basisname ist der Basisname. If it is in the package scope, it is com.struts.package, and under the action scope, it is com.struts.service.LoginService--> <fmt:setBundle basename="info" scope="request" var="baseName"/> <fmt:message key="username" bundle="${baseName }"> <!-- Passing parameters for placeholders --> <fmt: param value = "hello"/> <fmt: param value = "willkommen"/> </fmt: message> <br/> <!-fmt: Bundle-Set einen Ressourcensatz, auf das nur im Tag-Körper-> <!-Ressourcendatei in der Paket Scope-> <fmt: baseName = "com.strits.Package"/username = "com.strids.Package"/"messy"/"/"/"com.stripts.s.Package" zugänglich ist. </fmt: bündel> <!-Ressourcendatei im Action Scope-> <fmt: bundle basename