none
Se puede modificar el contenido de un RESX en tiempo de ejecución? RRS feed

  • Pregunta

  • Me gustaria modificar el archivo AppResources.resx en tiempo de ejecución, cuando la App se inicie. És possible hacerlo?
    http://www.iepastudios.com http://vadejocs.ara.cat
    martes, 1 de noviembre de 2011 5:31

Respuestas

  • Los recursos son de solo lectura, si necesitas modificarlos en tiempo de ejecución, debes usar para esa clave en concreto que deseas poder modificar un archivo xml que puedas cargar, leer, editar y volver a guardar.

    Un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    • Marcado como respuesta Roger Baldomà martes, 1 de noviembre de 2011 10:31
    martes, 1 de noviembre de 2011 7:34
    Moderador
  • Eso es :)

    Puedes forzar la cultura a eu-ES (euskera) ca-ES (catalá) o ga-ES (galego) en esta línea:

    public sdkGlobalizationCS.AppResources LocalizedResources { get { return localizedResources; } }

    La podemos modificar para dejarla así:

    public sdkGlobalizationCS.AppResources LocalizedResources 
    { 
        get 
        {
            if (UserSettings.CustomLanguage)
            {
                sdkGlobalizationCS.AppResources.Culture = new System.Globalization.CultureInfo(UserSettings.LanguageCode);
            }
            return localizedResources;
        }
    }
    

    De esta forma, en tu clase usersettings (por decir algo) tienes un boolean que indica si usar un lenguage forzado (de los que no se soportan y que el usuario ha seleccionado en tu app) y cambias la cultura usada de AppResources.

    Ten en cuenta que tienes que añadir los lenguages soportados (eu-ES, ca-ES, ga-ES) al archivo del proyecto (csproj) al igual que los otros.

    Yo lo he probado y permite establecer la cultura a euskera y acceder a un archivo de recursos recursos.eu-ES.resx perfectamente.

    Espero que lo entiendas, cualquier cosa te ayudo!

    Un saludo!

     

     

     


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    • Marcado como respuesta Roger Baldomà jueves, 8 de diciembre de 2011 10:04
    martes, 1 de noviembre de 2011 13:45
    Moderador

Todas las respuestas

  • Los recursos son de solo lectura, si necesitas modificarlos en tiempo de ejecución, debes usar para esa clave en concreto que deseas poder modificar un archivo xml que puedas cargar, leer, editar y volver a guardar.

    Un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    • Marcado como respuesta Roger Baldomà martes, 1 de noviembre de 2011 10:31
    martes, 1 de noviembre de 2011 7:34
    Moderador
  • Que lástima. Pensava haver encontrado la solución perfecta para las aplicaciones multiidioma con idiomas que de momento no reconoce el teléfono.

     

    Grácias por la información.


    http://www.iepastudios.com http://vadejocs.ara.cat
    martes, 1 de noviembre de 2011 10:30
  • Buenas!

    ¿Cual es el problema?

    Puedes crear los ficheros de recursos para los idiomas que no se soportan, y en cuanto se soporten automáticamente se empezarán a usar :)


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    martes, 1 de noviembre de 2011 10:39
    Moderador
  • Si, esto ya lo hago, pero claro, yo quiero que desde ya la gente ya pueda usar todos los idiomas que yo localizo. Me creo los RESX i los uso manualmente. Sin Bindings. 

    Había pensado que si se podía modificar el AppResources.RESX podria yo canviarlo al inicio de la APP introduciendo los valores a las claves segun el idioma que el usuario escojia en las opciones de la APP i así podia usar Binding.

    Qué le vamos a hacer ....

    A esperar XD

     


    http://www.iepastudios.com http://vadejocs.ara.cat
    martes, 1 de noviembre de 2011 10:44
  • Hola!

    No se como estás haciendo el tema de idiomas, pero lo normal es tener una clase que se encarga de obtener el recurso para que la puedas enlazar en XAML, si lo estás haciendo así, podrías forzar a devolver un archivo de recursos concreto (no lo he probado).

    Un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    martes, 1 de noviembre de 2011 11:27
    Moderador
  • Te refieres a esto ?

     

    public class LocalizedStrings
    {
        public LocalizedStrings()
        {
        }
    
        private static sdkGlobalizationCS.AppResources localizedResources = new sdkGlobalizationCS.AppResources();
    
        public sdkGlobalizationCS.AppResources LocalizedResources { get { return localizedResources; } }
    }
    
    

    del ejemplo que se descrive en MSDN ? ( http://msdn.microsoft.com/en-us/library/ff637520(v=VS.92).aspx )

    Si és así, que deberia hacer?  No termino de entendre lo que hacen estas líneas de código.


    http://www.iepastudios.com http://vadejocs.ara.cat
    martes, 1 de noviembre de 2011 11:54
  • Eso es :)

    Puedes forzar la cultura a eu-ES (euskera) ca-ES (catalá) o ga-ES (galego) en esta línea:

    public sdkGlobalizationCS.AppResources LocalizedResources { get { return localizedResources; } }

    La podemos modificar para dejarla así:

    public sdkGlobalizationCS.AppResources LocalizedResources 
    { 
        get 
        {
            if (UserSettings.CustomLanguage)
            {
                sdkGlobalizationCS.AppResources.Culture = new System.Globalization.CultureInfo(UserSettings.LanguageCode);
            }
            return localizedResources;
        }
    }
    

    De esta forma, en tu clase usersettings (por decir algo) tienes un boolean que indica si usar un lenguage forzado (de los que no se soportan y que el usuario ha seleccionado en tu app) y cambias la cultura usada de AppResources.

    Ten en cuenta que tienes que añadir los lenguages soportados (eu-ES, ca-ES, ga-ES) al archivo del proyecto (csproj) al igual que los otros.

    Yo lo he probado y permite establecer la cultura a euskera y acceder a un archivo de recursos recursos.eu-ES.resx perfectamente.

    Espero que lo entiendas, cualquier cosa te ayudo!

    Un saludo!

     

     

     


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    • Marcado como respuesta Roger Baldomà jueves, 8 de diciembre de 2011 10:04
    martes, 1 de noviembre de 2011 13:45
    Moderador
  • ¿Has probado el código que te he puesto? ¿Te ha servido para lo que querías?

    Un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter
    jueves, 3 de noviembre de 2011 5:29
    Moderador
  • algo tarde voy, pero hasta hoy, por diferentes motivos, me ha sido imposible probarlo.

    Funciona a la perfección. Muchíssimas gracias Josue!


    http://www.iepastudios.com http://vadejocs.ara.cat
    jueves, 8 de diciembre de 2011 10:03