2009-07-16 23 views
17

Ho bisogno di una molto breve introduzione localizzazione in una libreria di classiC# libreria di classi Localizzazione

io non sono interessato a tirare il locale dal contesto utente, piuttosto ho utenti memorizzati nel db, e la loro localizzazione è anche messa a punto nel db ....

mie funzioni nella libreria di classi possono già tirare il codice locale dal profilo utente nel db ... ora voglio includere l'uso resx a seconda del paese ...

Ho bisogno di alcuni passaggi per farlo correttamente ...

E sì - ho già cercato su Google questo e alcune ricerche, ma tutti i tutorial che riesco a trovare sono troppo complessi per le mie esigenze.

+0

Mi sono imbattuto in alcune strane ed estranee teqniques da MSDN ... usando AL ... sicuramente posso farlo usando solo lo studio visivo standard? –

risposta

21

Sfortunatamente, questo argomento è troppo complicato. ;) Lo so, ho fatto anche la ricerca.

per iniziare, però,

  1. creare una directory delle risorse nella vostra assemblea.

  2. Iniziare con l'inglese e aggiungere un "File di risorse" (.resx) a tale directory. Chiamalo qualcosa come "text.resx". Nel caso in cui la risorsa localizzata non possa essere trovata, l'app utilizzerà per default il ritiro da questo file.

  3. Aggiungi le risorse di testo.

  4. Aggiungere un altro file di risorse. Assegna un nome a qualcosa come "text.es.resx" nota la parte "es" del nome del file. In questo caso, ciò definisce lo spagnolo. Nota che ogni lingua ha la propria definizione del codice del personaggio. Guarda su

  5. Aggiungi le tue risorse spagnole ad esso.

Ora che abbiamo file di risorse su cui lavorare, proviamo a implementare.

Per impostare la cultura, estrarla dal record del database. Poi procedere come segue:

String culture = "es-MX"; // defines spanish culture 
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); 

Questo potrebbe accadere in app che ha caricato il tuo assemblaggio o durante l'inizializzazione di montaggio stesso. Prendi.

Per utlize la risorsa, tutto ciò che dovete fare è qualcosa di simile al seguente all'interno della vostra assemblea:

public string TestMessage() { 
    return Resources.Text.SomeTextValue; 
} 

Ta Da. Risorse facili. Le cose possono diventare un po 'più complicate se hai bisogno di cambiare i comandi di emergenza o fare qualcosa direttamente in una pagina di aspx. Aggiorna la tua domanda se hai bisogno di maggiori informazioni.

Nota che potresti avere file di risorse denominati "text.es-mx.resx" che sarebbero specifici per lo spagnolo messicano. Tuttavia, ciò non è sempre necessario perché "es-mx" tornerà a "es" prima che ricada al valore predefinito. Solo tu saprai quanto devono essere specifiche le tue risorse.

+0

Suoni buoni finora, tranne Resouces.Text.SomeTextValue - da dove viene, quali spazi dei nomi devo includere? –

+0

Appena corretto il passaggio 1. Lo spazio dei nomi completo per SomeTextValue sarebbe: MyAssemblyName.MyResourcesDirectoryName.MyResourceFile.MyTextValue. Quindi, usando il mio esempio, sarebbe: MyAssemblyName.Resources.Text.SomeTextValue. – NotMe

+1

Eseguendo la chiamata CurrentCulture, il sistema capirà automaticamente se usare text.resx o text.es.resx – NotMe

1

Denominare i propri resx con la cultura in essi contenuta (ad esempio resource_en-GB.resx) e selezionare la risorsa da interrogare in base alla cultura.

+0

fammi provare questo –

0

Per accedere al file di risorse dal codice, è necessario aprire il file di risorse e quindi modificare il menu a discesa "Modificatore di accesso" su "pubblico", il mio era "nessuna generazione di codice". Successivamente è possibile accedere come: Resources.FileName.ResourceName.

+1

-1: fatto interessante, ma non risponde alla domanda. –

Problemi correlati