internationalization

Mattepuffo's logo
Internazionalizzazione con Java Server Faces

Internazionalizzazione con Java Server Faces

In questi giorni mi sto dando allo studio delle Java Server Faces (JSF) e mi sono subito imbattuto in un problema: l'internazionalizzazione.

Volendo evitare modalità "classiche" tipo cookie o salvare i testi direttamente dentro un classe, possiamo procedere in questo modo.

Nel mio package ho creato un sotto package con dentro i file di properties: com.mf.language.

I file di properties devono avere questa nomenclatura: nome_lingua.properties, tranne quello di default.

Io ne ho due:

  • messages.properties (italiano)
  • messages_en.properties (inglese)

I file di properties lavorano con il concetto di chiave:valore:

ciao=CIAO!

Poi dovete scrivere l'equivalente per la altre lingue nei file appositi.

A questo punto creiamo, se non esiste già, il file di configurazione faces-config.xml dentro a WEB-INF, con questo dentro:

<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.2"
              xmlns="http://xmlns.jcp.org/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
    <application>
        <locale-config>
            <default-locale>it</default-locale>
            <supported-locale>en</supported-locale>
        </locale-config>
        <resource-bundle>
            <base-name>com_mf.language.messages</base-name>
            <var>msg</var>
        </resource-bundle>
    </application>
</faces-config>

In pratica gli diciamo dove sono i file delle lingue, e ne impostiamo una di default.