¿Cómo puedo garantizar que se cargue la versión de idioma adecuada de un recurso de cadena en tiempo de ejecución?
-
12-11-2019 - |
Pregunta
Tengo un archivo de recursos de cadena llamado "strings.resx" en mi proyecto VB.NET, definido como un recurso integrado.tengo otro archivo llamado strings.es.resx
, que contiene todas las mismas cadenas en español.Estoy cargando el recurso en tiempo de ejecución usando el siguiente código:
MyStrings = New ResourceManager("myprog.strings", GetType(MainForm).Assembly)
Configuré el idioma local en español en Windows y volví a iniciar sesión, pero todavía se cargan los recursos de cadena en inglés cuando se ejecuta lo anterior.¿Cómo puedo cargar los recursos en español si la configuración regional de Windows es ES?Esperaba que se manejara automáticamente.
Solución
Échale un vistazo al System.Threading.Thread.CurrentThread.CurrentUICulture
propiedad: tiene la costumbre de fijarse en en-US.
Si es así, intente configurarlo igual que CurrentCulture
.
Actualizar
Como eso no funcionó, verifique que la carpeta de salida de su aplicación tenga una es
carpeta, dentro de la cual hay un dll llamado strings.resources.dll.Si no, entonces, básicamente, el administrador de recursos no encuentra el recurso de cadena específico de la cultura, porque no está allí, en cuyo caso cópielos y debería funcionar.
Otros consejos
DESCARGO DE RESPONSABILIDAD - Todo esto es de memoria y puede que no sea 100% exacto :-)
Los recursos .NET se cargan usando Thread.CurrentUICulture
(a menos que lo anule explícitamente al cargar recursos en el código). Thread.CurrentUICulture
lo establece el idioma de la interfaz de usuario utilizado en la instalación de Windows y no se puede cambiar.Esto no es lo mismo que Thread.CurrentCulture
, que se configura en el Panel de control y se puede cambiar en cualquier momento.
Por ejemplo, en mi PC, CurrentCulture
devoluciones "en-GB"
porque ahí es donde estoy, pero CurrentUICulture
devoluciones "en-US"
porque Microsoft sólo proporciona una versión en inglés de Windows.