Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Android / Crea App multilenguaje con Android Studio

Crea App multilenguaje con Android Studio

Autor jc mouse lunes, abril 25, 2016

En este post aprenderemos los pasos básicos para construir una aplicación android con soporte multilenguaje, utilizaremos el Entorno de Desarrollo Integrado (IDE) de Google Android Studio.

Herramientas y conocimientos

  • Android Studio
  • Lenguaje Java básico

Nivel: Principiante

Tiempo: 15 minutos

Paso 1. El proyecto

Para crear nuevo proyecto File → New → New Proyect escribimos como nombre «App Multilenguaje» y en Company domain escribimos «jc-mouse.net»  🙂 presionamos NEXT

quechua

A continuación definimos la plataforma donde funcionara nuestro proyecto, elegimos uno que tenga soporte para la mayoría de dispositivos en el mercado. Por ejemplo:

min sdk

Presionamos NEXT y seleccionamos la plantilla para nuestra actividad: «Empty Activity«, presionamos otra vez NEXT y aquí debemos escribir el nombre para la clase y el archivo XML de nuestro Activity, dejaremos con los valores por defecto y presionamos FINISH para crear el proyecto.

main default

Paso 2. La Interfaz

Android Studio por defecto al crear el proyecto, crea un Layout con un textview donde dice «Hello World!», nosotros le agregaremos un Button más a nuestro activity_main.xml, escribimos un ID para Button y Textview respectivamente y finalmente cambiamos el layout RelativeLayout por un LinearLayout, el archivo XML queda de la siguiente forma:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="net.jc_mouse.appmultilenguaje.MainActivity">

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"/>

</LinearLayout>

Paso 3. Strings.xml

El archivo Strings.xml almacena las cadenas de texto que se usan en todo el programa, este XML se encuentra en la dirección RES/VALUES/ . Si abrimos este archivos vemos que cuenta con un solo valor que es el nombre de nuestra aplicación.

<resources>
    <string name="app_name">App Multilenguaje</string>
</resources>

Agregaremos 2 strings más, uno para el TextView y otro para el Button:

<resources>
    <string name="app_name">App Multilenguaje</string>
    <string name="str_textview">Hello World!!!</string>
    <string name="str_button">Change Language</string>
</resources>

Estos strings los asignamos al TextView y Button del archivo activity_main.xml de la siguiente forma:

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/str_textview" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/str_button"/>

Paso 3.1 Idiomas

Emplearemos 3 idiomas en nuestra aplicación, Ingles, EspañolPortugués, estos lenguajes los declararemos en el archivo Strings.xml  utilizando strings y array de la siguiente forma:

    <string name="str_en" >English</string>
    <string name="str_es" >Spanish</string>
    <string name="str_pt" >Portuguese</string>
    <string-array name="languages" >
        <item>@string/str_en</item>
        <item>@string/str_es</item>
        <item>@string/str_pt</item>
    </string-array>

Podíamos colocar los idiomas directamente en cada item del string-array pero si hacemos esto, esos items NO estarian disponibles para traducción, es por eso que antes de crear el array, declaramos tres string para los 3 idiomas que usaremos.

Paso 3.2 Agregar idiomas

Para agregar un nuevo idioma, clic derecho en Strings.xml -> Open Translations editor en la nueva pestaña que se abre, clic en el icono con la forma de un globo terráqueo de color azul «Add Locale«, buscamos y hacemos clic en los items SpanishPortuguese

android language

En nuestro proyecto podemos ver que ademas del archivo Strings.xml, aparecen otros 2 archivos más cada uno perteneciente al lenguaje que elegimos portugués (pt) y español (es)

string app

En la pestaña de Translations Editor se agregan columnas por cada nuevo lenguaje, lo que debemos hacer es escribir en cada fila su respectiva traducción, si queremos dejar una fila sin traducir, habilitamos el checkbox «Untranslatable» y dejamos las columnas de cada idioma vacíos.

translations editor

Si en estos momentos ejecutamos nuestra aplicación, este aparecerá en español si usas un dispositivo externo o en ingles si usas el emulador, esto pasa así porque la aplicación toma el idioma configurado del dispositivo desde el que se ejecuta y busca en los diferentes strings.xml el idioma que corresponde, si no lo encuentra usa el strings por defecto que es el que tiene el idioma ingles en nuestro caso.

Paso 4. Selector de idiomas

Si bien hasta ahora nuestra aplicación cambiara el idioma según la configuración del dispositivo donde se ejecute, también es deseable que el usuario pueda cambiar el idioma manualmente, para hacer esto posible, abrimos nuestro MainActivity y reemplazamos por el siguiente código:

package net.jc_mouse.appmultilenguaje;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.Locale;

public class MainActivity extends AppCompatActivity {

    private Button button;
    private TextView textview;
    private Locale locale;
    private Configuration config = new Configuration();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = ((Button)findViewById(R.id.button));
        textview = ((TextView)findViewById(R.id.textview));

        button.setOnClickListener(
                new View.OnClickListener() {
                    public void onClick(View view) {
                        showDialog();
                    }});
    }

    /**
     * Muestra una ventana de dialogo para elegir el nuevo idioma de la aplicacion
     * Cuando se hace clic en uno de los idiomas, se cambia el idioma de la aplicacion
     * y se recarga la actividad para ver los cambios
     * */
    private void showDialog(){
        AlertDialog.Builder b = new AlertDialog.Builder(this);
        b.setTitle(getResources().getString(R.string.str_button));
        //obtiene los idiomas del array de string.xml
        String[] types = getResources().getStringArray(R.array.languages);
        b.setItems(types, new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {

                dialog.dismiss();
                switch(which){
                    case 0:
                        locale = new Locale("en");
                        config.locale =locale;
                        break;
                    case 1:
                        locale = new Locale("es");
                        config.locale =locale;
                        break;
                    case 2:
                        locale = new Locale("pt");
                        config.locale =locale;
                        break;
                }
                getResources().updateConfiguration(config, null);
                Intent refresh = new Intent(MainActivity.this, MainActivity.class);
                startActivity(refresh);
                finish();
            }

        });

        b.show();
    }

}

Lo que hacemos es crear una ventana emergente «Dialog» que cargara cada idioma disponible en string-array y que el usuario podrá seleccionar para apara cambiar el idioma. Podemos ver el ejemplo terminado en el siguiente video:

🙂 es todo

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

ANSI: Colorear consola de salida de Netbeans

ANSI: Colorear consola de salida de Netbeans

Cuando realizamos proyectos java desde Netbeans, usamos System.out.println para imprimir datos en consola (para depurar,...

Juego: Acierta los colores (Código Fuente)

Juego: Acierta los colores (Código Fuente)

Acierta los colores o Adivina los colores es un sencillo juego que consiste en que dado 6 colores «rojo», «verde», «salm...

Generador de código para Netbeans

Generador de código para Netbeans

El IDE Netbeans al igual que Eclipse :), nos permite personalizar el espacio de trabajo y añadir funcionalidades que nos...

JavaFX y ApiRest – GET

JavaFX y ApiRest – GET

En este tutorial construiremos una aplicación en JavaFX para leer datos de un servicio web Herramientas IDE Netbeans 8.x...

Configura tu smartphone y PC para testear aplicaciones

Configura tu smartphone y PC para testear aplicaciones

Cuando desarrollamos aplicaciones para android como programadores nos interesa la velocidad al tiempo de depurar el códi...

Como paginar registros en Java/Access

Como paginar registros en Java/Access

En este post veremos una forma de realizar la paginación en una base de datos Access utilizando el lenguaje de programac...

Comparte lo que sabes

Categorias

Últimas entradas

El gigante tecnologico Google a puesto un bonito Doodle en su buscador que esta fascinando a sus millones de usuarios qu...

WhatsApp anuncio a través de su blog que ya se encuentra disponible la función de envío de fotos y videos TEMPORALES, es...

Muchas de las innovaciones computacionales de la NASA se desarrollaron para ayudar a explorar el espacio, pero ahora la...

TikTok es una plataforma de microvideos muy popular entre los jóvenes el cual cuenta ya con millones de videos cortps de...

Herramientas

Generador de Enlaces a Whatsapp