1. Xpages I8N
- Internationalization -
Werken met resource bundles (properties
bestanden) voor meertalige
Xpages applicaties
12 december 2012 (Xpages & Beer) Obento IT Consultancy 1
2. Agenda
Voorstellen
Wat is I8N / Internationalization
I8N in xpages
Methode 1 - de standaard xpages I8N
Methode 2 - custom I8N
Voor en nadelen van standaard en custom
Vragen
12 december 2012 (Xpages & Beer) Obento IT Consultancy 2
3. Voorstellen
Tom Steenbergen
Freelance consultant
Ruim 16 jaar ervaring met Lotus Notes (v3.31)
12 december 2012 (Xpages & Beer) Obento IT Consultancy 3
4. Wat is I8N / Internationalization
Applicatie voorbereiden of klaarmaken voor een
meertalige omgeving
Het gaat dan om de layout elementen van de
applicatie
Content valt hierbuiten
12 december 2012 (Xpages & Beer) Obento IT Consultancy 4
5. I8N in Xpages
IBM heeft een standaard voorziening ingebouwd
(methode 1)
Of we kunnen dit zelf inbouwen (methode 2)
Alles waar een tekst “label” in design elementen
wordt gebruikt kunnen we zo flexibel maken.
Beide methoden gebruiken een properties file waarin
name-value pairs staan “mijnlabel=dit is mijn label”
12 december 2012 (Xpages & Beer) Obento IT Consultancy 5
6. Methode 1 – de standaard Xpages I8N
Applicatie in Xpages bouwen in standaard taal
(taal waarin je normaal ook ontwikkelt)
Pas als de applicatie klaar is, I8N toevoegen
Stappen:
Ga naar Application Properties – Xpages tab
Check enable localization checkbox
Voeg met de [Add] button de benodigde talen toe
Selecteer welke van de talen de basis (source) taal wordt
Via Project – Clean wordt I8N toegevoegd
12 december 2012 (Xpages & Beer) Obento IT Consultancy 6
7. Methode 1 – de standaard Xpages I8N
12 december 2012 (Xpages & Beer) Obento IT Consultancy 7
8. Methode 1 – de standaard Xpages I8N
DDE maakt benodigde properties files
En zorgt voor code om het op scherm te tonen
Applicatie reageert op taal van de browser
Programmatisch taal switchen zelf toevoegen
In de Xpage/Custom controls is niets te zien
Bij aanpassing aan de applicatie simpelweg opnieuw
clean project doen
12 december 2012 (Xpages & Beer) Obento IT Consultancy 8
9. Methode 1 – de standaard Xpages I8N
demo
12 december 2012 (Xpages & Beer) Obento IT Consultancy 9
10. Methode 2 – de custom Xpages I8N
Ook hier eerst applicatie bouwen in standaard taal
En dan gaan I8N toevoegen
Taal initialiseren in sessionscope (simpel voorbeeld)
<xp:this.beforePageLoad><![CDATA[#{javascript:
try {
// initialise the language, set to browserlanguage if not in sessionscope
// NOTE: alternatively you could work with a (profile)doc that has a default language field and allowed langauges field
var userlang = sessionScope.get("userLanguage");
if (!userlang){
var userlang = @UpperCase(@Left(context.getLocale(),2));
sessionScope.put("userLanguage", userlang);
}
} catch(e) {
"Error = " + e;
}
}]]>
</xp:this.beforePageLoad>
12 december 2012 (Xpages & Beer) Obento IT Consultancy 10
11. Methode 2 – de custom Xpages I8N
En definieren van een resource bundle
<xp:bundle var="language">
<xp:this.src><![CDATA[#{javascript:
//Get the user selected language, if null set to the browser language
// NOTE: alternatively you could work with a (profile)doc that has a default language field and allowed langauges field
var langval = sessionScope.get("userLanguage");
if (!langval) {
langval = @UpperCase( @Left( context.getLocale(), 2 ) );
sessionScope.put("userLanguage", langval);
}
return "/" + langval + ".properties";
}]]></xp:this.src>
</xp:bundle>
Gebruikeen aparte custom control voor initialisatie
Oproepen van een tekst kan nu via ssjs
<xp:link escape="true" text="#{javascript:language.lblConfig}" id="topLinkMaintenance" styleClass="rgutter"
title="#{javascript:language.lblConfig}" value="/config.xsp"></xp:link>
12 december 2012 (Xpages & Beer) Obento IT Consultancy 11
12. Methode 2 – de custom Xpages I8N
In java
XSPContext xspContext = XSPContext.getXSPContext(FacesContext.getCurrentInstance());
ResourceBundle bundle = xspContext.bundle(“language”);
bundle.getString(“lblConfig”);
12 december 2012 (Xpages & Beer) Obento IT Consultancy 12
13. Methode 2 – de custom Xpages I8N
Demo
12 december 2012 (Xpages & Beer) Obento IT Consultancy 13
14. Voor en nadelen
Standaard Custom
Voordelen Voordelen
Standaard in Xpages Minder properties files nodig
Eenvoudig te doen (minimaal 1 per taal)
Name/value pairs beter leesbaar
Nadelen Minder redundancy in name/value pairs
Complexer onderhoud vanwege properties
(hergebruik (b.v. submit knop)
per XSP en Custom control
Name/value pairs slechter leesbaar Nadelen
Meer redundancy in name/value pairs Je moet het zelf doen
(b.v. voor submit knop)
12 december 2012 (Xpages & Beer) Obento IT Consultancy 14
15. Afsluitend
Mijn voorkeur heeft de custom methode
Gebruik duidelijke namen voor elementen
bv. lblLanguageSelect versus Label1
Ontbrekende name/value pairs zou je kunnen
opvangen via managed bean (“undefined”)
Ook te gebruiken in applicatie 1 met taal
12 december 2012 (Xpages & Beer) Obento IT Consultancy 15
16. Meer informatie op
Mastering Xpages – chapter 15
Xpages101.net – lesson 19
Lotus Notes and Domino Application Development wiki
obento-it.nl
En natuurlijk googlen op xpages localization of xpages multi
lingual enz.
12 december 2012 (Xpages & Beer) Obento IT Consultancy 16