Operaciones básicas de programación con Metro y Windows 8 (X)
Trabajando con ficheros de recursos e idiomas
Trabajando con ficheros de recursos e idiomas (III)
Consumiendo el fichero de recursos vía XAML
Sin embargo, es posible que (obviando la caja de mensaje), deseemos consumir el fichero de recursos vía XAML en lugar de hacerlo vía código como hemos mostrado anteriormente.
Para ello, por cada control que utilicemos en el código XAML, deberemos utilizar la etiqueta Uid.
La particularidad de hacerlo así es que podemos en el fichero de recursos debemos no sólo indicar el nombre del recursos, sino su propiedad.
Es decir, abriendo el fichero de recursos, las modificaciones que deberemos hacer corresponderían a lo que se indica en la siguiente imagen:
Dentro del código C# correspondiente con la página con la que estamos trabajando, deberemos comentar o eliminar el código del evento OnNavigatedTo para que no interfiera en el ejemplo.
Pero aún falta trabajar con la etiqueta Uid dentro de cada control en el código XAML. Vamos con ello.
Modificando el código XAML
Las modificaciones a realizar son bastante simples.
Basta con agregar una etiqueta Uid en cada control indicándole únicamente el nombre de la etiqueta de recursos identificadora (sin la propiedad a la que queremos vincular).
Es decir, en nuestro, el código XAML quedaría de la siguiente manera:
1: <Page
2: x:Class="Sample3.MainPage"
3: IsTabStop="false"
4: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
5: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
6: xmlns:local="using:Sample3"
7: xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
8: xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
9: mc:Ignorable="d">
10:
11: <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
12: <Canvas>
13: <TextBlock x:Name="tbNombre" Margin="140,120,0,0" Text="Nombre:"
14: FontSize="18" x:Uid="TituloNombre" />
15: <TextBox x:Name="txtNombre" Margin="220,120,0,0" Text="Escriba aquí su nombre" />
16: <Button x:Name="btnAceptar" Margin="140,180,0,0" Content="Aceptar"
17: BorderThickness="1" Click="btnAceptar_Click_1" x:Uid="BotonAceptar" />
18: </Canvas>
19: </Grid>
20:
21: </Page>
Como podemos apreciar para el control TextBlock por ejemplo, la etiqueta Uid tiene TituloNombre.
TituloNombre corresponde con TituloNombre.Text en el fichero de recursos.
Basta con ejecutar nuestra aplicación para comprobar y demostrar el comportamiento de nuestra aplicación.
Internacionalización de nuestra aplicación
Una cosa que me choca y que no sé si va a ser así siempre, es que una aplicación Metro funciona en el idioma que está configurado en el sistema operativo.
Es decir, si está en inglés, funcionará en inglés, y si está en español, en español.
Sin embargo, digo que me choca porque a veces y aún trabajando con un sistema operativo en español por ejemplo, es posible que queramos que una aplicación esté en inglés (por la razón que sea).
Indudablemente, si hacemos lo que he mostrado anteriormente, da igual como esté configurado nuestro sistema operativo, ya que nuestra aplicación tirará de los ficheros de recursos y se presentará en el idioma que le indiquemos en ese fichero Resources.resw.
Sin embargo, la mayoría de las veces no va a ser así.
El caso es que no he encontrado la forma de hacer que nuestras aplicaciones Metro funcionen con el idioma que queramos. Me extraña que no se pueda hacer, pero no he encontrado la forma de hacerlo de momento y no sé si es que estará escondida la forma, si es un aspecto relacionado con la beta del producto, o es que simplemente no se puede.
Es por eso que para hacer que nuestro sistema maneje diferentes idiomas, debemos cambiarlo nosotros en la configuración del sistema.
Para cambiar el idioma en nuestro Windows 8, pulsaremos la combinación de teclas Windows + Q para acceder desde allí al Panel de Control, o bien accederemos al Panel de Control directamente.
Dentro del Panel de Control, voy a seleccionar los iconos grandes para localizar más rápidamente la opción que quiero modificar.
Dentro de la ventana que aparece, seleccionaremos la opción Idioma.
Y en esta ventana modificaremos, agregaremos o eliminaremos los idiomas de nuestro sistema.
En mi sistema tengo esta configuración:
Esto significa, que el idioma que aparece como preferente es el español.
Llegados a este punto, hagamos un salto y retornemos al código de nuestra aplicación para volver a este punto una vez hagamos las modificaciones que quiero contar.
(…Continúa…)