Chi ha mai provato a sviluppare una applicazione Localizzata quando addirittura non Globalizzata , si sarà reso conto di quanto sia noioso mano a mano che si sviluppa porre nei file di risorse le stringhe che poi dovranno essere tradotte nelle varie lingue. Mi riferisco soprattutto alle stringhe perchè in realtà sono quelle che riguardano almeno l'80% della fatica necessaria. Personalmente trovo questa attività molto deconcentrante. Tipicamente mentre sto scrivendo una porzione di codice, dover copiare una stringa nel file di risorse per poi referenziarla mi fa perdere il filo di quello che stavo realizzando, mentre lasciare le stringhe ad un passaggio successivo fa sì che me dimentichi sempre qualcuna. Per questo ho elaborato un metodo che sto usando proficuamente con IMHO 2.0, e che riesce a salvare le proverbiali capra e cavoli. Il mio metodo si basa sulla seguente classe:

using System.Reflection;
using System.Resources;

namespace Elite.Imho2.Resources
{
    
public sealed class Strings
    {
        
private static readonly ResourceManager mResourceManager =
            
new ResourceManager(
                "Elite.Imho2.Resources.Strings", 
                Assembly.GetExecutingAssembly());

        
private Strings()
        {}

        
public static string Get(string name)
        {
            
if (mResourceManager.GetString(name) as string != null)
                
return mResourceManager.GetString(name) as string;
            
            
return name;
        }
    }
}
 
La classina, un po' banale se vogliamo è un singleton che permette di accedere ad un ResourceManager creato al primo accesso. La particolarità della classe è che il metodo Get() qualora non trovi una risorsa corrispondente a "name" ritornerà "name " stesso come stringa invece che sollevare un'eccezione. In queso modo, con un po' di astuzia si potranno scrivere delle righe che usano questa classe come in questo eempio:
 
 
MessageBox.Show(Strings.Get("IMHO 2.0"), Strings.Get("Please enter the title"));
 
 
In questo modo l'applicazione sarà popolata con delle stringhe reali anche durante lo sviluppo e in fase di localizzazione sarà molto semplice tradurre le stringhe senza dover rincorrere astruse sigle in giro per il codice.

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Non fare oggi quello che è meglio fare domani