Describe the advantages of localizing an application and developing code that defines, reads, and sets the locale with a Locale object. - Descrever as vantagens de localizar uma aplicação e desenvolver código que defina, leia e aplique a localidade em um objeto Locale.
É esperado que o candidato saiba compreender e analisar aspectos de Internacionalização e Localização, incluindo o uso da da classe Locale.
Alguns aspectos de uma aplicação podem depender do país e da linguagem. Por exemplo:
-
Formatos de escrita de data
-
O dia 6 de Agosto de 2019 seria representado no Brasil por
06/08/2019, porém nos EUA seria08/06/2019.
-
-
Formatos de escrita de valores monetários
-
Dez Reais no Brasil seriam representados por
R$ 10, enquanto na França Dez Euros seriam10 €.
-
-
Formatos de separação de casas decimais ou milhares
-
No Brasil utiliza-se vírgula para separar decimais e pontos para milhares:
100.245,03. Nos EUA, utiliza-se o inverso:100,245.03.
-
Por isso, para que sua aplicação lide corretamente com esses cenários, é necessário compreender dois aspectos: Internacionalização (Internationalization) e Localização (Localization).
A Internacionalização, também chamada de i18n, é o ato de projetar sua aplicação para que seja possível facilmente adaptá-la para utilizar novos formatos e idiomas.
A Localização, também chamada de l10n, é o ato de adaptar sua aplicação para de fato utilizar um novo formato específico.
Antes de continuar, entenda a execução do método main no exemplo a seguir e o que é apresentado no console após sua execução.
link:../../../src/org/j6toj8/localization/locale/Locale_Complete.java[role=include] - Constantes -
en_CA
en_GB
- Construtor -
pt_BR
pt_PT
ca_ES_VALENCIA
- Language Tags -
en_CA
pt_BR
pt_PT
ca_ES
gsw__#u-sd-chzh
- Builder -
pt_BR
az_AZ_#Latn
bs_BA_POSIX_#Latn_c-ccNo Java, a classe Locale no pacote java.util nos ajuda a lidar com esses aspectos.
-
Geralmente, um
Localeé representado por um idioma e um país.-
pt_BR- Português do Brasil -
en_US- Inglês dos EUA -
it_CH- Italiano da Suíça -
fr_BE- Francês da Bélgicasrc/org/j6toj8/localization/locale/Locale_LocaleLanguageCountry.javalink:../../../src/org/j6toj8/localization/locale/Locale_LocaleLanguageCountry.java[role=include]
-
-
Um
Localepode ter ainda uma Variante, um Script e Extensões.src/org/j6toj8/localization/locale/Locale_VarScriptExtension.javalink:../../../src/org/j6toj8/localization/locale/Locale_VarScriptExtension.java[role=include]
TipNo exame da certificação, a Oracle geralmente só utiliza idioma e país. -
É possível construir um Locale com o
Builder, com construtores, ou por uma Language Tag.src/org/j6toj8/localization/locale/Locale_LocaleInstantiation.javalink:../../../src/org/j6toj8/localization/locale/Locale_LocaleInstantiation.java[role=include]
A diferença entre eles é:
-
Com os construtores é possível passar apenas o idioma, a região (país) e uma variante.
-
Com language tags é possível passar uma
Stringno padrão IETF BCP 47. -
Com o builder é possível criar da forma mais específica possível: idioma, região, variante, script e extensões.
-
-
O
Localeaceita letras maiúsculas e minúsculas escritas de forma incorreta.src/org/j6toj8/localization/locale/Locale_LocaleCase.javalink:../../../src/org/j6toj8/localization/locale/Locale_LocaleCase.java[role=include]
Saída no consolept_BR pt_BR pt_BR
Nesse exemplo, escrevemos de forma incorreta:
-
O idioma deveria ser minúsculo (pt), mas está maiúsculo (PT).
-
A região deveria estar maiúscula (BR), está minúscula (br).
Mesmo assim, o
Localeé criado corretamente. Veja que isso é um código ruim. O ideal é sempre escrever respeitando maiúsculas e minúsculas.
-
-
Existem algumas constantes na classe
Localepara as localizações mais populares.src/org/j6toj8/localization/locale/Locale_LocaleCommons.javalink:../../../src/org/j6toj8/localization/locale/Locale_LocaleCommons.java[role=include]
Saída no consoleen_CA fr_CA zh_CN zh en it_IT zh_CN zh_TW
-
É possível recuperar o
Localepadrão ou alterá-lo programaticamente.src/org/j6toj8/localization/locale/Locale_LocaleDefault.javalink:../../../src/org/j6toj8/localization/locale/Locale_LocaleDefault.java[role=include]
Saída no consolept_BR ko_KR
-
É possível verificar os
Localedisponíveis, pois eles variam de acordo com a JVM sendo executada.src/org/j6toj8/localization/locale/Locale_LocaleAvailable.javalink:../../../src/org/j6toj8/localization/locale/Locale_LocaleAvailable.java[role=include]
Saída no consolenn ar_JO bg kea nds zu am_ET fr_DZ ti_ET
-
Um
Localetambém pode ser representado somente pelo idioma.src/org/j6toj8/localization/locale/Locale_LocaleLanguageOnly.javalink:../../../src/org/j6toj8/localization/locale/Locale_LocaleLanguageOnly.java[role=include]
Saída no consolept en es fr
-
Adding Internationalization and Localization
Boyarsky, Jeanne; Selikoff, Scott. OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide (p. 255). Wiley. Edição do Kindle.
-
Internationalization. Java Documentation.
-
Internationalization: Understanding Locale in the Java Platform.