Come posso garantire che la versione linguistica appropriata di una risorsa stringa venga caricata in fase di esecuzione?

StackOverflow https://stackoverflow.com/questions/4968990

Domanda

Ho un file di risorse stringa chiamato "strings.resx" nel mio progetto VB.NET, definito come risorsa incorporata.Ho un altro file chiamato strings.es.resx, che contiene tutte le stesse stringhe in spagnolo.Sto caricando la risorsa in fase di esecuzione utilizzando il seguente codice:

MyStrings = New ResourceManager("myprog.strings", GetType(MainForm).Assembly)

Ho impostato le impostazioni locali della lingua su Espanol in Windows e ho effettuato nuovamente l'accesso, ma ricevo ancora il caricamento delle risorse di stringa inglese quando viene eseguito quanto sopra.Come posso caricare le risorse spagnole se la locale Windows è ES?Mi aspettavo che venisse gestito automaticamente.

È stato utile?

Soluzione

Dai un'occhiata alla proprietà System.Threading.Thread.CurrentThread.CurrentUICulture - ha l'abitudine di essere riparato a EN-US.

Se lo è, prova a impostarlo allo stesso di CurrentCulture.

Aggiornamento

Poiché questo non ha funzionato, verificare che la cartella di output dell'applicazione abbia una cartella es, all'interno del quale è una DLL chiamata Strings.resources.dll.In caso contrario, quindi, fondamentalmente, il gestore delle risorse non trova la risorsa della stringa specifica della cultura, perché non è lì, nel qual caso copiali e dovrebbe funzionare.

Altri suggerimenti

DISCLAIMER - tutto questo viene dalla memoria e potrebbe non essere accurato al 100% :-)

Le risorse .NET vengono caricate utilizzando Thread.CurrentUICulture (a meno che non lo sovrascrivi esplicitamente durante il caricamento delle risorse nel codice). Thread.CurrentUICulture è impostato dalla lingua dell'interfaccia utente utilizzata nell'installazione di Windows e non può essere modificato.Questo non è lo stesso di Thread.CurrentCulture, che è impostato nel Pannello di controllo e può essere modificato in qualsiasi momento.

Ad esempio, sul mio PC, CurrentCulture ritorna "en-GB" perché è lì che sono, ma CurrentUICulture ritorna "en-US" perché Microsoft fornisce solo una versione in lingua inglese di Windows.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top