JSF un anno dopo #16

Dec 28, 2010 16:22

Internazionalizzare una applicazione faces e` facile. Si crea il ResourceBundle e lo si piazza in una qualche directory che verra` messa in /web-inf/classes, quindi insomma insieme alle altre classi. Si impostano poi i locale supportati nel tag application del faces config

it
            en
            fr

in ogni pagina che si intende internazionalizzare occorre poi inserire il tag

Per richiamare le varie stringe basta poi usare l'EL in qualsiasi punto della pagina (la seconda variante e` utile per nomi di etichetta che contegono il punto):

value="#{bundle.prova}"
value="#{bundle['prova.prova1']}"

Il browser consente di solito di impostare delle preferenze con le lingue. Come si comporta faces nella scelta della lingua? Per ogni lingua preferita e per ogni lingua supported si controlla se c'e` corrispondenza esatta o, eventualmente, corrispondenza senza l'indicazione del paese. Altrimenti si controlla la lingua default e anche in questo caso si controlla prima se c'e` corrispondenza completa e poi se c'e` corrispondenza senza la nazione. Se nessuna corrispondenza viene trovata ma esiste un default si usa quello.
E' possibile sovrascrivere programmaticamente il locale nella UIViewRoot o impostarlo nel tag f:view mediante l'opportuno attributo che accetta anche expression language.
Come gia` detto, i componenti fanno uso di messaggi il cui testo viene reperito mediante chiavi definite nel framework. Per internazionalizzare tali messaggi occorre quindi inserire tali chiavi (con un messaggio opportunamente tradotto) nel ResourceBundle.

jsf

Previous post
Up