Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problema de acceso a recursos de diferentes idiomas

Iniciado por seth444, 17 de Junio de 2008, 08:32:57 AM

« anterior - próximo »

seth444

Hola, soy programador C# y mi problema es que estoy intentando hacer que cuando se ejecute mi asembly y tenga que acceder a unos determinados recursos de tipo cadena, acceda a los recursos del idioma correcto.

He leido por ahi que se puede hacer simplemente creando un "resources.[idoma_que_buscas].resx" dentro de Properties, por ejemplo, mi "resources.resx", que es el genérico, tiene recursos de tipo cadena en Ingles.  Creo un "resources.es.resx" y añado los mismo rescursos pero esta vez traduciendolos a español.
En la ejecución del asembly lo que hago es, antes de ejecutar el procesado del asembly

Culture = new CultureInfo("es-ES"); // en español-españa

CultureInfo previousCulture = System.Threading.Thread.CurrentThread.CurrentUICulture;
         System.Threading.Thread.CurrentThread.CurrentUICulture = Culture;

De esta forma me estoy guardando la cultura del hilo ejecutor y le estoy asignando la nueva cultura en español-España.

Sin embargo, y después de hacer todas estas cosas, no consigo hacer durante la ejecución del código del asembly que se acceda a los recursos en español, ya que accede a los del resources.resx genérico, es decir, me muestra las cadenas que hay en recursos en inglés.

¿Alguien sabe algo de este tema?.

Gracias, un saludo a tod@s ;).
lt;< Omnia in gloriam Dei facite (1Co 10, 31) >>

[EX3]

Creo que tenia una practica de esto de cuando hice el master en .NET. Esta tarde si no me olvido te lo busco y si lo encuentro te lo subo para que lo descargues.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Vicente

Si no recuerdo mal las clases generadas por los recursos son las que controlan el tema de la cultura, ¿has probado a asignar el objeto de CultureInfo a esa clase en vez de al Thread?

Un saludo,

Vicente

seth444

he probado a hacer esto:

CultureInfo Culture = new CultureInfo("es-ES");

Properties.Resources.Culture = Culture;

De esta forma sigue pasando de mi, y en vez de entrar a los recursos existentes del fichero "Resources.es-Es.resx" accede a los del "Resources.resx".

Es como si no existiera el fichero "Resources.es-Es.resx".

No se si es esto lo que me dices que haga.

Un saludo.
lt;< Omnia in gloriam Dei facite (1Co 10, 31) >>

Vicente

Nope, tu cuando creas un Pepito.resx tienes una clase del tipo Pepito estática de la que sacas cosas. Prueba a hacer Pepito.Culture = tuCultureInfo y debería funcionar (vamos, lo acabo de probar y va bien :p).

Un saludo!

Vicente

seth444

Uhm, tengo 2 ficheros de recursos, "Resources.es.resx" y "Resources.resx", el primero contiene las cadenas en español y el segundo en inglés.

Existe la clase Resources, que pertenece a la clase genérica y es la que dicta  el resultado devuelto de los recursos de tipo cadena. Sin embargo el resultado no cambia cuando le asigno el cultureinfo como me dices, como os comenté antes, para el assembly es como si sólamente existiera el Resources.resx.

Empiezo a ver que el problema está en mi Assembly, puesto que he me he creado un proyecto nuevo de tipo "windows application", he seguido los pasos que os puse en el hilo, es decir, crear los .resx de cada idioma y cambiado la cultura... y... desafortinadamente para mi assembly (y por tanto para mi) funciona correctamente, es decir se accede a los recursos en el idioma que en cada momento le impongo.

Así que no se cual es el problema de utilizar distintos ficheros de recursos en un Asembly, ¿¿alguien lo ha hecho alguna vez y le ha funcionado??.


[/img]
lt;< Omnia in gloriam Dei facite (1Co 10, 31) >>

[EX3]

Wenas.

Encontre la practica. En un principio pensaba que estaba en C# pero al final resulto estar en VB.NET, aunque para el caso te da lo mismo, el codigo seria el mismo salvo por la sintaxis.

vbdotnet_P016_international.zip

Le estado echando un ojo a la practica. Se trata de un formulario con varios archivos de recursos 'asociados al formulario' que contienen cadenas y otro archivo de recursos que contiene imagenes a las que hace referencia una de las cadenas de recursos. Al al iniciar la aplicacion se establece uno de ellos como origen de recursos cambiando el idioma del formulario y sus controles asi como la imagen a mostrar.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

seth444

Vale, ya he solucionado el problema, resulta que el problema era el tipo de proyecto en el que habia creado la librería.

No se porque pero me daba problemas con los ficheros de recursos, así que he vuelto a crear un nuevo proyecto, esta vez lo he creado como una class library y me ha ido estupendamente.

Gracias por vuestra ayuda, y gracias Ex3 por subir tus apuntes, ;). De todas formas les voy a pegar un vistazo ^^.
lt;< Omnia in gloriam Dei facite (1Co 10, 31) >>






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.