JSF Internationalisierung - jenseits von "Message Bundles"

mjustin

Aktives Mitglied
Hallo,

gibt es einschlägige Resourcen im Web die sich umfassender mit der Internationalisierung von JavaServer Faces beschäftigen?

Es wird meist nur über *.properties (Message Bundles) geschrieben.

Andere Elemente im User Interface werden dadurch aber nicht unterstützt: Listboxen mit Auswahloptionen, im Quelltext hinterlegte und dynamische Texte etc. - wenn eine bestehende Anwendung internationalisert werden muss, kämpft man dann mit den Fragen wie: wie muss ich sie umbauen, damit beim Wechsel der Sprache (de->en) durch Benutzer alle Texte ausgetauscht werden.

Bei Application- und Sessionscope einer Backing Bean ist es dann ja ungünstig, wenn die Texte nur in der Initialisierung festgelegt werden, da diese nicht erneut ausgeführt wird wenn benutzerseitig auf eine andere Sprache gewechselt wird.

Ist es eher Praxis, anstatt on-the-fly Sprachwechsel die Sprache als Benutzereinstellung zu hinterlegen so dass ab Anmeldung und Sitzungsstart die Sprache unveränderlich bleibt?
 

tandraschko

Mitglied
Sorry aber ich versteh ehrlich gesagt die Frage nicht ganz.
Willst du wissen wie du messages bundles aus dem code abfrägst?
Vielleicht kannst du nochmal genau beschreiben was dein Problem ist.
 

mjustin

Aktives Mitglied
Bei den Recherchen habe ich gelesen, dass der Browser dem Server über Accept-Language seine gewünschte Sprache mitteilen kann. Dies habe ich getestet und man kann in der Initialisierung der Bean auf das aktuelle View-Locale zugreifen und erhält darin die vom Benutzer eingestellte Sprache.

Man kann in der JSF Oberfläche die Sprachumschaltung weglassen. In den Init-Methoden kann dann je nach Locale die Initialisierung der backing bean vornehmen.

Eine zusätzliche dynamische Sprachumschaltung in der Oberfläche braucht man dann nur für Entwicklung und Test, wenn festgestellt werden muss ob noch optische Probleme (übersetzte Texte sind länger als verfügbarer Platz) bestehen oder noch Übersetzungen fehlen.


Als Artikel dazu fand ich: https://netbeans.org/kb/docs/javaee/ecommerce/language.html


Java:
    @PostConstruct
    void init() {

        FacesContext ctx = FacesContext.getCurrentInstance();
        Locale l = ctx.getViewRoot().getLocale();
        
        String language = l.getLanguage(); 

        // ab hier kann man dynamische Elemente der Oberfläche anpassen 
        // if (language.startsWith("en")) ...
        
    }
 
Zuletzt bearbeitet:

Ähnliche Java Themen

Neue Themen


Oben