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.