Subscribe Twitter Twitter

lunes, 13 de septiembre de 2010

Multiidioma (I)

En esta primera parte vamos a explicar como hacer que nuestras aplicaciones sean multiidioma. En primer lugar decir que cuando hacemos una aplicación multiidioma no es necesario si no queremos hacerlo en todos los idiomas de los mercados en los que pongamos nuestra app en el caso en el cual el idioma del dispositivo no esté contemplado en la aplicación cogerá por defecto el inglés.

1. Crear un fichero de tipo Strings file el cual será nuestro fichero de recursos.

Lo vamos a crear en la carpeta de Resources y para ello haremos botón derecho sobre la carpeta de Resources,  Add - New File y seleccionados debajo de MAC OS X la opción Resources y dentro de está en la parte derecha elegimos el fichero de tipo Strings File  y lo llamaremos Localizable.strings (hay que llamarlo así).



2. Ahora ya tenemos un fichero de recursos pero nosotros necesitamos tener varios idiomas,para ello lo que haremos será "crear diferentes versiones" de este fichero de recursos.

Botón derecho sobre el fichero Localizable.strings, Get info y en la pestaña General haremos click sobre el botón Make File Localizable



3. Volvemos a la pestaña general y ahora tenemos una pantalla con una caja de texto en la que pone solo English que este será el idioma por defecto.

4. Para añadir más idiomas, hacer clic en Add Localization y en función del idioma que queramos pondremos el código iso del idioma, otra opción es seleccionar del combo el idioma que queramos o escribirle tal cual, yo recomiendo poner el código iso. Una vez añadidos los deseados cerramos la pantalla.




Listado de los códigos de los idiomas aquí
5. Ahora verás que ha aparecido una flechita a la izda del fichero, si le damos se despliega y como  ves hay una versión del fichero Localizable.strings por cada idioma que hayamos añadido.


El formato de las diferentes versiones del fichero Localizable.string será el siguiente:

(hacemos clic sobre la versión "es"):
En el español:

"Saludo" = "Hola";
"Boton" = "Botón";

(hacemos clic sobre la versión "English")
En el de inglés:

"Saludo" = "Hello";
"Boton" = "Button";


Como has podido ver estos ficheros de recursos son listados de pares clave-valor (ambos cadenas de texto).

Importante:  A pesar de ser cadenas de texto no van precedidas de @

6. Para obtener el texto correspondiente a la clave "Saludo" lo haremos de la siguiente manera:

NSLocalizedStrings(@"Saludo",@"");

EJEMPLO:

Para asignar el valor a una label:   etiqueta.text =NSLocalizedString(@"Saludo",@"");

Para asignar el texto de un botón: [miBoton setTitle:NSLocalizedString(@"Boton",@"")forState:0];


Tenemos preparado un tutorial con esto, debido a los problemas con el audio no se escucha en youtube. Por lo tanto en cuanto se resuelva dicho problema pondremos el video.