SlideShare une entreprise Scribd logo
1  sur  17
Xpages I8N
                         - Internationalization -
                 Werken met resource bundles (properties
                      bestanden) voor meertalige
                          Xpages applicaties



12 december 2012 (Xpages & Beer)      Obento IT Consultancy   1
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
Voorstellen
    Tom Steenbergen
    Freelance consultant
    Ruim 16 jaar ervaring met Lotus Notes (v3.31)




12 december 2012 (Xpages & Beer)   Obento IT Consultancy   3
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
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
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
Methode 1 – de standaard Xpages I8N




12 december 2012 (Xpages & Beer)   Obento IT Consultancy   7
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
Methode 1 – de standaard Xpages I8N
    demo




12 december 2012 (Xpages & Beer)   Obento IT Consultancy   9
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
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
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
Methode 2 – de custom Xpages I8N
    Demo




12 december 2012 (Xpages & Beer)   Obento IT Consultancy   13
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
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
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
Vragen




12 december 2012 (Xpages & Beer)   Obento IT Consultancy   17

Contenu connexe

Similaire à xpages internationalization

Voordelen PDF/X-4 en het Testen van Uw Workflow
Voordelen PDF/X-4 en het Testen van Uw WorkflowVoordelen PDF/X-4 en het Testen van Uw Workflow
Voordelen PDF/X-4 en het Testen van Uw WorkflowVIGCbe
 
XPages Introductie
XPages IntroductieXPages Introductie
XPages IntroductieRob Bontekoe
 
Applicatie Architectuur, Java Frameworks en ADF
Applicatie Architectuur, Java Frameworks en ADFApplicatie Architectuur, Java Frameworks en ADF
Applicatie Architectuur, Java Frameworks en ADFLucas Jellema
 
Ontwikkelen van online platformen met Drupal 8
Ontwikkelen van online platformen met Drupal 8Ontwikkelen van online platformen met Drupal 8
Ontwikkelen van online platformen met Drupal 8Raymond Muilwijk
 
Lucius Drupal Development Cursus
Lucius Drupal Development CursusLucius Drupal Development Cursus
Lucius Drupal Development CursusLuciuswebsystems
 
Datamanagement for Research: A Case Study
Datamanagement for Research: A Case StudyDatamanagement for Research: A Case Study
Datamanagement for Research: A Case StudyDirk Roorda
 

Similaire à xpages internationalization (6)

Voordelen PDF/X-4 en het Testen van Uw Workflow
Voordelen PDF/X-4 en het Testen van Uw WorkflowVoordelen PDF/X-4 en het Testen van Uw Workflow
Voordelen PDF/X-4 en het Testen van Uw Workflow
 
XPages Introductie
XPages IntroductieXPages Introductie
XPages Introductie
 
Applicatie Architectuur, Java Frameworks en ADF
Applicatie Architectuur, Java Frameworks en ADFApplicatie Architectuur, Java Frameworks en ADF
Applicatie Architectuur, Java Frameworks en ADF
 
Ontwikkelen van online platformen met Drupal 8
Ontwikkelen van online platformen met Drupal 8Ontwikkelen van online platformen met Drupal 8
Ontwikkelen van online platformen met Drupal 8
 
Lucius Drupal Development Cursus
Lucius Drupal Development CursusLucius Drupal Development Cursus
Lucius Drupal Development Cursus
 
Datamanagement for Research: A Case Study
Datamanagement for Research: A Case StudyDatamanagement for Research: A Case Study
Datamanagement for Research: A Case Study
 

xpages internationalization

  • 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
  • 17. Vragen 12 december 2012 (Xpages & Beer) Obento IT Consultancy 17