Recientemente estuve profundizando en la localización con .NET. Esencialmente, aprendí cómo personalizar un formulario (usando las propiedades de Idioma y Localizable) y luego cambiar la cultura en consecuencia.Localización .NET; Fallback cuando utilizo ResourceManager
Sin embargo, descubrí que al migrar mis cadenas codificadas en inglés a los archivos de recursos generados automáticamente, y el uso de .GetString ("Clave") - bueno, digamos que no era feliz: P.
Decidí hacer un conjunto separado de archivos resx dedicados exclusivamente a las traducciones de cadenas codificadas. Siguieron la convención/requisito de [nombre]. [Código de cultura] .resx. Hice de estos para cada idioma relevante; p.ej. appstrings.de.resx (para alemán) y appstrings.resx (como línea base invariable).
Para utilizar estos nuevos recursos, he creado una instancia de ResourceManager y Recursos Conjunto
Dim resManager As New ResourceManager("LanguageTest.appstrings", Assembly.GetExecutingAssembly)
Dim resSet As ResourceSet = resManager.GetResourceSet(My.Application.UICulture, True, True)
se estableció la cultura de la interfaz de usuario actual (por ejemplo, al alemán) usando
My.Application.ChangeUICulture("de")
Problema original
A menos que t él resSet.GetString ("Clave") se define explícitamente en el appstrings.de.resx, devolverá una cadena en blanco. ¿Hay alguna forma de que pueda recurrir a appstrings.resx (donde "Key" existe), que asumí que sería la línea base predeterminada?
actualización
Rhapsody hizo una sugerencia a continuación, mientras que la propia punta real no funciona, lo hizo en-hecho a provocar un punto interesante, usando resManager.GetString ("llave"), frente a RESSET .GetString ("Clave"). Esto parece funcionar sin defectos hasta el momento. Es decir, los valores presentes en el archivo de idioma especializado se devuelven, mientras que los valores "faltantes" se retrotraen a la cultura predeterminada cuando se accede mediante una sola tecla.
número posterior
La única cuestión que queda sería si el impacto en el rendimiento de la utilización de ResourceManger en contraposición a un ResourceSet caché será perjudicial que?
Lamentablemente, los recursos de "appstrings" no estaban presentes en el espacio de nombres My.Resources. Sin embargo, su solución de código plantea un punto interesante (ver pregunta actualizada) :). –