2011-01-12 11 views
1

Der Versuch, die JSF-Webanwendung mehrsprachig zu machen. Zu diesem Zweck decken alle den HTML-Code mit <f:view> tags:JSF-Website mehrsprachig gestalten

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html> 
<html xmlns= ... > 

<f:view locale="#{actionsContainer.languageDetails.locale}"> 
    <head> 
    <meta charset="utf-8" /> 
    <f:loadBundle basename="messages.Messages" var="key" /> 
    </head> 
    <body> 
    <h:outputText value="#{key.myText}" /> 
    </body> 
</f:view> 
</html> 

als in Ressourcen Ich habe mehrere 'Messages.properties' Dateien mit Übersetzungen in einigen Sprachen:

  • Messages_en.properties
  • Messages_es.properties
  • Messages.properties // Standard

Die Probe Inhalt dieser Dateien ‚Messages_es.properties‘ ist:

myText=España 

Nehmen wir meine locale ist „es“, und als Spanisch Übersetzungsdatei lädt es ist Wert und macht auf dem Bildschirm. Die Sonderzeichen (z. B. "ñ") werden in einer Browserausgabe jedoch nicht korrekt angezeigt. Anstelle von speziellen spanischen Buchstaben bekomme ich so etwas wie "³".

Ich habe versucht, Datei .properties mit UTF-8-Codierung, ohne BOM zu speichern. Und die Ausgabe wurde in etwas wie dieses "" geändert.

Und so ist die Frage, wie bekomme ich diese spezielle Sprache Buchstaben in einer Ausgabe ?!

Antwort

2

Eigenschaftendateien werden standardmäßig mit der ISO-8859-1-Codierung gelesen. Sie benötigen das JDK-Werkzeug native2ascii, um UTF-8-Eigenschaftendateien in ISO-8859-1-Eigenschaftendateien zu konvertieren und diese dann zu verwenden.

In JSF können Sie jedoch auch eine benutzerdefinierte ResourceBundle mit einer Control angeben, in der Sie das Lesen von Eigenschaftendateien für die Verwendung von UTF-8 stattdessen überschreiben. Siehe auch this article.

+0

Ich habe versucht, alle diese speziellen Buchstaben mit \ uXXXX Format zu ersetzen, aber Webkit Browser (Chrome und Safari) zeigt einen Fehler an: Entität 'u00E7' nicht definiert –

+0

Das ist seltsam, da sie nicht vom Webbrowser gelöst werden sollten vom Webserver. Wie genau laden und zeigen Sie sie? Hast du den verlinkten Artikel überprüft, wie es gemacht werden könnte (und sollte)? – BalusC

0

Wenn Sie mit Ressourcenbündeln arbeiten, sollten Sie das Plugin ResourceBundle Editor für Eclipse verwenden (http://sourceforge.net/projects/eclipse-rbe/).

Verwandte Themen