Invest in people before investing in tools

Il blog di Matteo Baglini
posts - 118, comments - 95, trackbacks - 697

[Spring.NET #21] Spring.Core, IMessageSource by StaticMessageSource

Spring.NET offre anche funzionalità di localizzazione/internazionalizzazione delle risorse. Tutta la gestione avviene tramite l'interfaccia IMessageSource, che è parte integrante dell' ApplicationContext, con i seguenti metodi:

  • GetMessage: esistono molti overload di questo metodo i quali permettono di ottenere una risorsa di tipo stringa indicando la chiave, la CultureInfo, ed un'insieme di argomenti che verranno utilizzati come valori di replace per la stringa.
  • GetResourceObject: permette di ottenere una quasiasi risorsa, per esempio un immagine. Anche in questo caso esistono più overload del metodo ed i possibili parametri sono la chiave, la CultureInfo.
  • ApplyResources: imposta un qualsiasi tipo di risorsa, come parametri accetta il valore da settare, la chiave e la CultureInfo.

Come per altre funzionalità Spring.NET estende quelle offerte dal .NET Framework, in questo specifico caso lo fa rendendo la localizzazione più flessibile, più veloce utilizzando dei sistemi di cache e più facilmente raggiungibile dai vari layer che compongono la nostra applicazione grazie all'integrazione con l' ApplicationContext. Esistono due implementazione dell'interfaccia IMessageSource, StaticMessageSource e ResourceSetMessageSource, la prima permette di aggiungere risorse in maniera programmatica, la seconda invece utilizzata i file di risorse (.resx), questa implementazione è sicuramente quella più utile ed utilizzata. Vediamo un esempio di utilizzo della prima implementazione, basta creare una Console Application ed aggiungere il seguente codice nel Main:

   1:  using System;
   2:  using System.Globalization;
   3:  using System.Threading;
   4:   
   5:  using Spring.Context.Support;
   6:   
   7:  namespace SpringSeries.Core.MessageSource {
   8:      class Program {
   9:          static void Main(string[] args) {
  10:              string KEY = "HelloMessage";
  11:   
  12:              StaticMessageSource _messageSource = new StaticMessageSource();
  13:   
  14:              CultureInfo _usCulture = new CultureInfo("en-US");
  15:   
  16:              _messageSource.AddMessage(KEY,Thread.CurrentThread.CurrentUICulture, "Ciao!");
  17:   
  18:              _messageSource.AddMessage(KEY,_usCulture, "Hi!");
  19:              
  20:              Console.WriteLine("Culture corrente: {0}", System.Threading.Thread.CurrentThread.CurrentUICulture.DisplayName);
  21:              Console.WriteLine("Messaggio con la Culture corrente: {0}", _messageSource.GetMessage(KEY));
  22:              Console.WriteLine("Messaggio con la Culture en-US: {0}", _messageSource.GetMessage(KEY, _usCulture));
  23:   
  24:              Console.Read();
  25:          }
  26:      }
  27:  }

Technorati Tag:

Print | posted on domenica 9 dicembre 2007 13:23 | Filed Under [ .NET OpenSource Spring.NET ]

Powered by:
Powered By Subtext Powered By ASP.NET