Inicio > Android, Programación > Aplicaciones multilenguaje en Android

Aplicaciones multilenguaje en Android


En muchas ocasiones queremos que nuestras aplicaciones estén disponibles en varios idiomas y que esto no suponga crear varias versiones de la misma. Afortunadamente, hacer esto en Android es bastante sencillo.

Lo primero que debemos tener en cuenta es evitar insertar “textos en el código” y en vez de eso, hacer uso del archivo strings.xml de la carpeta values.

Para hacerlo desde un XML es bastante sencillo. Por ejemplo, para un botón sería así:

<Button
    	android:layout_width="wrap_content"
    	android:layout_height="wrap_content"
    	android:text="@string/accept" /> <!-- Texto que aparecerá -->

Sin embargo, cuando necesitamos obtener el texto desde el código java no es tan intuitivo, pero igualmente sencillo.

Desde el Activity podemos hacer:


String cadena = getResources().getString(R.string.accept);

Si lo usamos desde una clase distinta al Activity, tendremos que pasar el getResources() hasta esta.

Ahora que tenemos nuestra aplicación preparada para internacionalizarla, así que solo queda meter las traducciones correctamente.

Básicamente, consiste en crear carpetas con sufijos del idioma, en nuestro caso para los textos, tendríamos values con el idioma por defecto (normalmente inglés)  y creas otra con el sufijo, en este caso, values-es .

Esto nos vale con todos los resources, como los drawable y los raw. Una lista de carpetas de ejemplo sería así:

  • drawable-hdpi
  • drawable-ldpi
  • drawable-mdpi
  • drawable-es-hdpi
  • drawable-es-ldpi
  • drawable-es-mdpi
  • raw
  • raw-es
  • values
  • values-es

Si queremos añadir más idiomas, pues basta con añadir más carpetas. Los elementos que sean iguales en todos los idiomas no hace falta que los pongamos por duplicado (como las imágenes de fondo), basta con ponerlos en la versión por defecto.

Anuncios
  1. Jorge
    12 marzo, 2012 en 8:33 pm

    Bueno no resolvió mis dudas pero tan sin quiera es buen código para empezar

    • 12 marzo, 2012 en 8:35 pm

      Este mini-tutorial está orientado a los que ya tienen una base y saben usar los recursos como los strings.xml.

  2. 4 mayo, 2012 en 10:01 am

    Muchas gracias por la información, ha funcionado como decías.

    Esto para los caracteres es perfecto pero ¿que pasa con datos numéricos que utilice la apliación?, por ejemplo una calculadora que muestre el resultado en chino.

    Gracias

    • 4 mayo, 2012 en 10:05 am

      Sé que los chinos utilizan el sistema internacional aparte de dos suyos, siempre puedes dejar el internacional… No sé si es a eso a lo que refieres.

      • 4 mayo, 2012 en 10:11 am

        Bueno, es que lo desconozco. La duda es que si la aplicación tiene que mostrar “10”, ¿en su terminal aparecerá “10” o “十” (numero 10 en chino)? Y al contrario, si la apliación
        pide un dato y recibe “十”, ¿como hay que resolver este asunto?.

        Gracias

      • 4 mayo, 2012 en 10:16 am

        Si la aplicación envía 10 aparecerá 10. Ahora bien, lo que él escriba desconozco como lo traducirá.

        Siempre puedes forzar a que use solo dígitos normales en la declaración del EditText.

      • 4 mayo, 2012 en 10:19 am

        Gracias, seguiré investigando.

  1. No trackbacks yet.

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

A %d blogueros les gusta esto: