Generation App – Día 23 – Localizar tu aplicación

Este tópico describe como separar recursos localizables del código creando archivos de recursos idioma-específicos. Visual Studio utiliza estos archivos para crear ensamblados que le permitirán a tu aplicación soportar múltiples lenguajes.

Agregando un archivo de recurso a un proyectos y habilitando el soporte de localización

  1. Agrega un archivo de recurso para el lenguaje por defecto en tu aplicación

    • Abre el proyecto en Visual Studio

    • Agrega un archivo de recurso. En el Solution Explorer, clic derecho al nombre del proyecto, da clic en Add -> New Item

    • En la ventana de dialogo de New Item, selecciona Resources File y renombra el archivo a como lo desees (Ej: AppResources.resx). Este archivo contendrá los recursos para el lenguaje por defecto de la aplicación.

    • Identifica strings en tu aplicación y agrégalas al archivo de recurso. Puedes colocar un nombre, un valor y un comentario opcional por cada string. NOTA: El nombre debe ser único; hazlo lo mas descriptivo posible. El valor es el string que se mostrara en la interfaz al usuario final. Los comentarios son opcionales, sin embargo, son útiles en caso que se trabaje con grandes volúmenes de strings.

  2. Ahora agrega archivos de recursos adicionales por cada lenguaje que tu aplicación va a soportar. Cada archivo agregado deberá ser nombrado en el nombre correcto de cultura/lenguaje. Por ejemplo: para la cultura español de España, usaAppResources.es-ES.resx; para el lenguaje alemán de Alemania, usaAppResources.de-DE.resx.

  3. Define la cultura por defecto soportado por tu aplicación.

    • En el Solution Explorer, da clic derecho a tu proyecto, y seleccionaProperties

    • Debajo de la pestaña Application, da clic al botón Assembly Information

    • En la lista de Neutral Language, selecciona default culture. Esto identifica el lenguaje de los strings en el archivo de recursos por defecto. Por Ejemplo, si el archivo de recurso por defecto es nombrado AppResources.resx, y los strings en el archivo están en ingles (United States), deberás seleccionar English (United States) como el lenguaje neutral del proyecto.

  4. Cierra el proyecto y abre el archivo de proyecto (<proyecto-nombre>.csproj) en un editor de texto. Localiza la etiqueta <SupportedCultures> y agrega los nombres de cada cultura adicional (lenguaje) que tu aplicación puede soportar. Deberás declarar tantas culturas como archivos .resx presentes en tu aplicación. Separa los nombres de lenguajes por un ‘;’. No debes agregar el idioma por defecto. Si tu aplicación tambien soporta aleman y español. La etiqueta quedaría:
    <SupportedCultures>de-DE;es-ES;</SupportedCultures>

Reemplazando strings dentro-del-código con astringes en un archivo de recurso

  1. En el Solution Explorer, abre un archivo de recurso y selecciona Public de la listaAccessModifier, en el tope del panel. Repite este paso por cada archivo de recurso en tu proyecto.

  2. Define una clase con la propiedad que apunta a los recursos. En el siguiente ejemplo, la clase LocalizesStrings contiene una propiedad que apunta al recurso AppResources en el namespace sdkGlobalizationCS:

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

    Si hay archivos de recursos adicionales en tu proyecto, puedes tener una clase LocalizedStrings con multiples propiedades, el cual cada uno retorna un recurso particular

  3. Abre el archivo App.xaml y agrega el siguiente código XAML a la sección <Application.Resources>

    <Application.Resources>
        <local:LocalizedStrings xmlns:local="clr-namespace:sdkGlobalizationCS" x:Key="LocalizedStrings" />
    </Application.Resources>
  4. Reemplaza aquellos valores de strings dentro del código con el siguiente código XAML:

    “{Binding Path=resourceFile.resourceName, Source={StaticResource LocalizedStrings}}”

    Donde resourceName es el nombre del recurso localizable, resourceFile es el nombre del apuntador que contiene el resourceName, y LocalizedStrings es el nombre asignado a una instancia de la clase que retorna el recurso.

    El siguiente XAML del ejemplo Globalization Sample se enlaza con el control ListBoxItem cn el string LangRegionNameFrFR retornado de la instancia de la clase LocalizedStrings.

    <ListBoxItem Content="{Binding Path=LocalizedResources.LangRegionNameFrFR, Source={StaticResource LocalizedStrings}}" />
  5. Repite el paso previo por cada string que quieres hacer localizable, en cada archivo XAML en tu aplicación que contiene contenido localizable.

  6. Compila tu aplicación – Y compilara una aplicación multilenguaje y mostrara al usuario una interfaz acorde a la configuración de idioma en su teléfono.

Localización para la barra de aplicación

En Windows Phone, se puede agregar una barra de aplicación en tu aplicación ya sea vía XAML o C#. Sin Embargo, en vista que la barra de aplicación no es un control de silverlight, no soporta el data binding dinámico para actualizar los textos debajo de los botones acorde al idioma de la aplicación. Por esta razón, si quieres localizar estos strings, debes crear y actualizar la barra de aplicación al momento de ejecución. El siguiente código de ejemplo muestra una función que despliega la barra de aplicación haciendo uso de los recursos de localización que provee los valores de los strings. Este ejemplo asume que ya creaste una librería DLL de recursos de localización con entradas de strings llamadas “ButtonText” y “MenuItemText.”

// Helper function to build a localized ApplicationBar
private void BuildApplicationBar()
{     
    // Set the page's ApplicationBar to a new instance of ApplicationBar.     
    ApplicationBar = new ApplicationBar();     

    // Create a new button and set the text value to the localized string from AppResources.          
    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("ApplicationIcon.png",UriKind.Relative));     
    appBarButton.Text = AppResources.ButtonText;     
    ApplicationBar.Buttons.Add(appBarButton);     

    // Create a new menu item with the localized string from AppResources.     
    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.MenuItemText);         
    ApplicationBar.MenuItems.Add(appBarMenuItem);
}

Autor: Jorge Ramirez      Síguelo en twitter @JorgeRamirezMSP
Publicación original –> http://j.mp/XIElO7
Fuente 1 –> http://j.mp/VC60v8

Anuncios

1 comentario

Archivado bajo Windows Phone

Una respuesta a “Generation App – Día 23 – Localizar tu aplicación

  1. Pingback: Con Generation App nunca fue tan fácil desarrollar para Windows Phone « El Blog de MSP para Latinoamerica [BETA]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s