Quick-n-Dirty: Locale setzen

Um die Locale-Einstellung einer XPage programmatisch zu beeinflussen, kann die Methode setLocaleString bzw. setLocale des context-Objektes verwendet werden.  Damit die Änderungen übernommen wird, muss die Einstellung im BeforePageLoad gesetzt werden.

So ändert ein…

context.setLocaleString("zh-tw")

… bzw. ein …

context.setLocale(java.util.Locale.TAIWAN)

…die Spracheinstellungen der generierten XPage. Sowohl das lang-Attribute der HTML-Seite als die Dojo-Konfiguration wird dabei gesetzt:

<!DOCTYPE html>
<html lang="zh-tw">
<script type="text/javascript"
src="/xsp/.ibmxspres/dojoroot-1.6.1/dojo/dojo.js"
djConfig="locale: 'zh-tw', parseOnLoad: true"></script>

Durch diese Änderung wird z.B. der Datepicker-Dialog des DojoToolkit auf Taiwanisch gerendert.

Eine Liste der möglichen Einstellungen findet sich in der Beschreibung des java.util.Locale-Objektes.

Alternativ kann die Änderung auch mit SSJS in einer Aktion o.ä. durchgeführt werden. Allerdings muss darauf die XPage neu geladen werden. Dies kann dann wie folgt aussehen:

context.setLocale(java.util.Locale.TAIWAN);
context.reloadPage()
Dieser Beitrag wurde unter Dojo Toolkit, HTML, Java Script, ServerSide JavaScript, Web, XPages, XSP abgelegt und mit , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

3 Antworten zu Quick-n-Dirty: Locale setzen

  1. Fredrik sagt:

    Can it be set globally or do you need to set it for every page loaded?

  2. Yes, with a phase listener (just an idea – currently working with them):

    package ch.hasselba.xsp.debug;

    import javax.faces.context.FacesContext;
    import javax.faces.event.PhaseEvent;
    import javax.faces.event.PhaseId;
    import javax.faces.event.PhaseListener;
    import javax.faces.component.UIViewRoot;

    public class LocalizationSetter implements PhaseListener {

    public void afterPhase(PhaseEvent arg0) {
    // TODO Auto-generated method stub

    }

    public void beforePhase(PhaseEvent event) {
    FacesContext facesContext = event.getFacesContext();
    UIViewRoot view = facesContext.getViewRoot();
    view.setLocale(java.util.Locale.CANADA_FRENCH);
    }

    public PhaseId getPhaseId() {
    return PhaseId.RENDER_RESPONSE;
    }

    }

    This would work globally.

  3. Pingback: Quick-n-Dirty: Locale setzen (2) | blog@hasselba.ch

Schreibe einen Kommentar zu Fredrik Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.