2010-10-27 9 views

risposta

1

Suggerirei di consultare ResourceBundles.

È una domanda complicata, perché se si dispone di un database, lo si vuole anche I18N.

1

Questo è fondamentalmente una questione di dominio. Se sei sul web, la maggior parte dei framework principali fornirà un modo per I18N (in primavera, questo funziona with .properties files and taglibs).

Per le applicazioni desktop al contrario, l'iniezione di risorse potrebbe essere un'opzione interessante. Il Framework di applicazione Spring va ancora oltre e ti consente di configurare i componenti Swing denominati (pulsanti, etichette, ...) interamente da file di configurazione. Con questo puoi impostare i colori e i bordi dei componenti ma anche i loro testi.

13

È possibile utilizzare ResourceBundle.getBundle(name) che restituisce il pacchetto corretto in base alle impostazioni locali dell'utente e ottenere messaggi specifici.

Il modo in cui funziona la classe ResouceBundle consiste nel caricare un pacchetto (in genere un file .properties) con i messaggi localizzati. Per esempio si può avere:

messages_en.properties 
----- 
greeting = "Hello " 

e

messages_es.properties 
----- 
greeting = "Hola " 

e usarlo come segue.

... void main(... . { 
    ResourceBundle bundle = ResourceBundle.getBundle("messages", userLocale); 
    System.out.println(bundle.getString("greeting") + " Steve "); 
} 

E sarà stampata

Hello Steve 

se locali dell'utente è l'inglese (en), e

Hola Steve 

se locali dell'utente è Spagnolo (ES)

Il metodo ResouceBundle.getBundle() , non solo carica i file .properties, se disponibile può anche caricare una classe che a sua volta può caricare messaggi e da un database.

Consulta anche:

ResourceBundle

Internationalization Quick Intro

Problemi correlati