3

Cultura informatica: Display tag impostare la internazionalizzazione

In questi giorni sono stato impegnato in questa attività :
Internazionalizzare (i18n) un portale in cui veniva utilizzato Struts.

Molte pagine sono mostrate utilizzando la libreria Display tag.
Questa libreria permette di mostrare i dati di un elenco distribuiti su più pagine.

Conoscevo questa libreria (poi l’abbiamo dovuta lasciare in quanto introduceva un tempo di latenza troppo alto per l’elaborazione dei dati) e sapevo che permetteva la internazionalizzazione: Distinzione di diversi messaggi a seconda della localizzazione dell’utente in sessione.
Il mio scopo era visualizzare diversi messaggi se l’utente era Italiano o Inglese.

Visto che ci ho scapocciato una cifra di scrivo la soluzione:

Nella action per la definizione della lingua,LOCALE ACTION, va impostata una variabile di sessione in funzione della tabella sotto riportata:

class name behaviour
org.displaytag.localization.I18nJstlAdapter Mimic JSTL, looking for a locale specified in session with the Config.FMT_LOCALE key.
org.displaytag.localization.I18nStrutsAdapter Struts adapter, will look for the locale specified by Globals.LOCALE_KEY
org.displaytag.localization.I18nWebworkAdapter Webwork2 adapter, will look for the locale specified by the fist LocaleProvider action in the stack
org.displaytag.localization.I18nSpringAdapter Spring adapter, will use RequestContextUtils.getLocale() for locale resolution (which will in turn delegate to the Spring locale resolver)

Nello specifico nel mio codice ho inserito (nella mia LocaleAction):
session.setAttribute(“Globals.LOCALE_KEY”,new Locale(linguaggio) ); // Ricordate uso Struts

Successivamente ho introdotto, nell’area di configurazione del displaytag, due file: uno per l’italiano e l’altro per l’inglese
displaytag_it.properties
displaytag_en.properties

Nei 2 file di properties (quello italiano e quello inglese)vanno impostate due properties in questa maniera:
# locale provider (Jstl provider by default)
locale.provider=org.displaytag.localization.I18nStrutsAdapter

# locale.resolver (nothing by default, simply use locale from request)
locale.resolver=org.displaytag.localization.I18nStrutsAdapter

Riavviato il server: FUNZIONA TUTTO

In sintesi:
1 – creare due file di properties (es. displaytag_en.properties e displaytag_it.properties) Ovviamente in lingue differenti per i vari valori
2 – Impostare le properties locale.resolver e locale.provider all’interno in funzione del framework utilizzato
3 – Impostare la variabile in sessione in funzione del framework utilizzato
4 – Riavviate il server
Per maggiori dettagli vi invito a leggere la documentazione del displaytag:
I18n – Internationalization

3 Comments Posted

  1. ci stavo letteralmente smadonnando da 2 giorni, lascio nel mio codice un commento con link a questa pagina: SEI UN GRANDE!!!!

  2. Son contento, Ricorda ogni tanto di cliccare qualche sponsor 😀
    ps. per il commento che hai messo nel codice, in futuro potrai dire che la colpa è mia 😀

  3. per completezza:

    per i titoli delle colonne, bisogna usare solo il tag titleKey (rimuovendo title altrimenti lo sovrascrive) in display:column che a sua volta usa il MessageResources_??.properties di struts nella locale corretta.

    e se è necessario un export “decente” in XLS, bisogna importare il poi-3.2.jar ed inserire nel displaytag.properties:
    export.excel.class=org.displaytag.export.excel.ExcelHssfView

    gli altri funzionano male o esportano solo la pagina (ignorando palesemente l’export.amount=list)

    that’s all, folks!

    click 😉

Leave a Reply

Your email address will not be published.


*


5