Android - Parte 8

8
Android Introdução à programação para dispositivos móveis com o Android SDK Parte 8 – Internacionalização Prof. Manuel F. Paradela Ledón, 2011. Universidade Cruzeiro do Sul

Transcript of Android - Parte 8

Page 1: Android - Parte 8

Android

Introdução à programação para dispositivos móveis com o Android SDK

Parte 8 – Internacionalização

Prof. Manuel F. Paradela Ledón, 2011. Universidade Cruzeiro do Sul

Page 2: Android - Parte 8

Internacionalização

Frequentemente necessitamos elaborar um aplicativo com versões em vários idiomas (multilíngue) ou até para países, regiões ou costumes específicas, para que o universo de usuários potenciais seja maior e nosso programa atenda determinadas especificações. A tecnologia Android fornece alguns recursos especiais para garantir esse objetivo. Neste material breve apresentaremos duas abordagens para preparar uma versão “internacionalizada” de nosso aplicativo: • Pastas de arquivos de figuras e de textos diferentes para cada idioma.

• Detecção do idioma ou país utilizado no dispositivo, utilizando métodos

adequados na lógica de nosso programa, para personalizar mensagens, textos e até estratégias ou critérios específicos da aplicação para as diferentes línguas, regiões ou países.

Page 3: Android - Parte 8

Pastas de arquivos de figuras e de textos diferentes para cada idioma

Observe neste exemplo que criamos três pastas para figuras (drawable, drawable-es, drawable-pt), sendo drawable-es a pasta para idioma espanhol, drawable-pt para português e drawable para qualquer outro idioma (pasta default). Por exemplo, uma mesma figura no arquivo cidade.png repetida

dentro destas três pastas poderia ter textos específicos em cada língua (escola, escuela, school). Caso a configuração no aparelho esteja em outra língua que não seja espanhol ou português, a figura utilizada será cidade.png da pasta drawable. Para textos multilíngues preparamos quatro pastas (values, values-es, values-it, values-pt) com o arquivo específico com a tradução em cada uma das línguas previstas. Novamente, a pasta value será a utilizada (default) caso o idioma não seja italiano, espanhol ou português.

Page 4: Android - Parte 8

Arquivos de textos diferentes para cada idioma

Os conteúdos dos arquivos strings.xml nos quarto idiomas considerados:

<resources>

<string name="app_name">Teste1</string>

<string name="hello_world">Hello world!</string>

<string name="menu_settings">Settings</string>

<string name="title_activity_main">Example</string>

</resources>

<resources>

<string name="app_name">Teste1</string>

<string name="hello_world">¡Hola señores!</string>

<string name="menu_settings">Configuraciones</string>

<string name="title_activity_main">Ejemplo</string>

</resources>

<resources>

<string name="app_name">Teste1</string>

<string name="hello_world">Olá pessoal! Tudo bem?</string>

<string name="menu_settings">Configurações</string>

<string name="title_activity_main">Exemplo</string>

</resources>

<resources>

<string name="app_name">Teste1</string>

<string name="hello_world">Buongiorno ragazzi!</string>

<string name="menu_settings">Instrumenti</string>

<string name="title_activity_main"> Esempio</string>

</resources>

Page 5: Android - Parte 8

O arquivo XML de uma tela (Activity) multilíngue

Neste exemplo de arquivo XML utilizamos referências a ic_launcher e hello_world.

Android utilizará automaticamente a figura ic_launcher.png da pasta da língua correta

e, também, o texto dentro do arquivo strings.xml, dependendo do idioma configurado

no aparelho (por exemplo, <string name="hello_world">¡Hola señores!</string> para espanhol).

<RelativeLayout xmlns:tools="http://schemas.android.com/tools"

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="match_parent" >

<ImageButton

android:id="@+id/imageButton1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_marginTop="65dp"

android:src="@drawable/ic_launcher" />

<TextView

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@+id/imageButton1"

android:text="@string/hello_world"

android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

Page 6: Android - Parte 8

Convenção para países e idiomas Em ocasiões será necessário saber o idioma e o país selecionados no aparelho Android para que o programa efetue algumas ações adicionais. Duas normas ISO estabelecem códigos de duas letras para identificar cada idioma e cada país:

Os códigos de idioma são duas letras minúsculas, como definidas em ISO_639. Os

códigos de países são duas letras maiúsculas, como definidas em ISO_3166-1.

Veja mais informação em http://developer.android.com/reference/java/util/Locale.html

Assim, por exemplo, as duas letras minúsculas "en" especificam idioma inglês, "es" idioma espanhol e "pt" português. Os códigos de letras de países (duas letras maiúsculas) permitem identificar, por exemplo, Inglaterra como "GB", Espanha como "ES" e Portugal e Brasil pelas siglas "PT" e "BR".

Page 7: Android - Parte 8

Detectando o país e o idioma no programa Android

import java.util.Locale; //Importamos a public final class Locale

int idioma=1;

String moeda="$";

Locale loc = Locale.getDefault();

String country = loc.getCountry();

String language = loc.getLanguage();

if(language.equalsIgnoreCase("en")) { //English

idioma = 1;

if(country.equalsIgnoreCase("GB")) moeda = "£";

}

if(language.equalsIgnoreCase("es")) { //Español

idioma = 2;

if(country.equalsIgnoreCase("ES")) moeda = "€";

}

if(language.equalsIgnoreCase("pt")) { // Português

idioma = 3;

if(country.equalsIgnoreCase("BR")) moeda = "R$";

if(country.equalsIgnoreCase("PT")) moeda = "€";

}

Page 8: Android - Parte 8

Bibliografia sugerida

ANDROID. Android Developers.

Disponível em http://developer.android.com

ANDROID. Localization.

http://developer.android.com/guide/topics/resources/localization.html

http://developer.android.com/reference/java/util/Locale.html

ANDROID. Supporting Different Languages.

http://developer.android.com/training/basics/supportingdevices/languages.html

LECHETA, RICARDO R. Google Android, Aprenda a criar aplicações para

dispositivos móveis com o Android SDK.

São Paulo: Novatec, 2010.

MEDNIEKS, Z. et. al. Desenvolvimento de Aplicações Android.

São Paulo: Novatec, 2009.