MessageSource in Spring 3

L’interfaccia MessageSource supporta la parametrizzazione e internazionalizzazione dei messaggi e sono disponibili 2 implementazioni:

  1. ResourceBundleMessageSource, che utilizza ResourceBundle
  2. ReloadableResourceBundleMessageSource, che ricarica i file di configurazione in caso di modifiche senza la necessità di un riavvio

Il seguente è un esempio di ResourceBundleMessageSource per ottenere messaggi nella lingua specificata in Spring 3.

  • crea un progetto java nel tuo ambiente di sviluppo (eclipse, netbeans, etc.)
  • configura il progetto con Maven con file pom.xml

    in alternativa puoi uilizzare le seguenti librerie:

    • spring-context-3.1.2.RELEASE.jar
    • spring-aop-3.1.2.RELEASE.jar
    • aopalliance-1.0.jar
    • spring-beans-3.1.2.RELEASE.jar
    • spring-core-3.1.2.RELEASE.jar
    • commons-logging-1.1.1.jar
    • spring-expression-3.1.2.RELEASE.jar
    • spring-asm-3.1.2.RELEASE.jar
    • log4j-1.2.17.jar
  • crea una cartella “resources” e aggiungila al classpath
  • crea il file resources/app-context.xml

    come spiegato più avanti, la stringa “messages” corrisponde alla prima parte del nome dei file .properties, ma puoi anche specificare un percorso dal classpath come ad esempio “locale/messages”
  • crea il file resources/log4j.xml
  • crea i 3 file .properties per gestire il contenuto dei messaggi nelle lingue inglese (Gran Bretagna), inglese (Stati Uniti) e italiano
    • resources/messages_en_GB.properties
    • resources/messages_en_US.properties
    • resources/messages_it.properties

      i nomi assegnati ai file .properties sono importanti e devono rispettare una di queste sintassi:

      • [base name]_[language]
      • [base name]_[language]_[country]
      • [base name]_[language]_[country]_[variant]

      dove

      • [base name] è quello specificato in resources/app-context.xml (“messages” in questo esempio)
      • [language] è il linguaggio (“en”, “it”, etc.)
      • [country] è la nazione (“GB”,”US”, “IT”, la stessa lingua può variare a seconda della nazione, l’inglese parlato negli Stati Uniti è differente da quello parlato in Inghilterra)
      • [variant] è un codice per una ulteriore variante della lingua (non ustato in questo esempio)
  • crea il file eu/lucazanini/messagesource/Main.java

    Utilizzo il metodo String getMessage(String code, Object[] args, Locale locale) dove

    • code è un codice da cercare nei file .properties
    • args è un array di oggetti da passare come parametri e che sostituiscono i simboli {0} {1} {2} … nei file .properties, usa “null” per non passare parametri
    • locale è un oggetto della classe Locale ha 3 costruttori:
      • Locale(String language)
      • Locale(String language, String country)
      • Locale(String language, String country, String variant)

    è anche possibile utilizzare il metodo String getMessage(String code, Object[] args, String defaultMessage, Locale locale) in cui è possibile specificare un messaggio di default

  • lancia l’applicazione

  • Referenze:
    MessageSource
    Locale

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

    Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.