Skip to content

Latest commit

 

History

History
212 lines (184 loc) · 6.13 KB

File metadata and controls

212 lines (184 loc) · 6.13 KB

Localização (Locale)

Objetivo
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 seria 08/06/2019.

  • Formatos de escrita de valores monetários

    • Dez Reais no Brasil seriam representados por R$ 10, enquanto na França Dez Euros seriam 10 €.

  • 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.

src/org/j6toj8/localization/locale/Locale_Complete.java
link:../../../src/org/j6toj8/localization/locale/Locale_Complete.java[role=include]
Saída no console
 - 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-cc

No Java, a classe Locale no pacote java.util nos ajuda a lidar com esses aspectos.

  1. 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élgica

      src/org/j6toj8/localization/locale/Locale_LocaleLanguageCountry.java
      link:../../../src/org/j6toj8/localization/locale/Locale_LocaleLanguageCountry.java[role=include]
  2. Um Locale pode ter ainda uma Variante, um Script e Extensões.

    src/org/j6toj8/localization/locale/Locale_VarScriptExtension.java
    link:../../../src/org/j6toj8/localization/locale/Locale_VarScriptExtension.java[role=include]
    Tip
    No exame da certificação, a Oracle geralmente só utiliza idioma e país.
  3. É possível construir um Locale com o Builder, com construtores, ou por uma Language Tag.

    src/org/j6toj8/localization/locale/Locale_LocaleInstantiation.java
    link:../../../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 String no 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.

  4. O Locale aceita letras maiúsculas e minúsculas escritas de forma incorreta.

    src/org/j6toj8/localization/locale/Locale_LocaleCase.java
    link:../../../src/org/j6toj8/localization/locale/Locale_LocaleCase.java[role=include]
    Saída no console
    pt_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.

  5. Existem algumas constantes na classe Locale para as localizações mais populares.

    src/org/j6toj8/localization/locale/Locale_LocaleCommons.java
    link:../../../src/org/j6toj8/localization/locale/Locale_LocaleCommons.java[role=include]
    Saída no console
    en_CA
    fr_CA
    zh_CN
    zh
    en
    it_IT
    zh_CN
    zh_TW
  6. É possível recuperar o Locale padrão ou alterá-lo programaticamente.

    src/org/j6toj8/localization/locale/Locale_LocaleDefault.java
    link:../../../src/org/j6toj8/localization/locale/Locale_LocaleDefault.java[role=include]
    Saída no console
    pt_BR
    ko_KR
  7. É possível verificar os Locale disponíveis, pois eles variam de acordo com a JVM sendo executada.

    src/org/j6toj8/localization/locale/Locale_LocaleAvailable.java
    link:../../../src/org/j6toj8/localization/locale/Locale_LocaleAvailable.java[role=include]
    Saída no console
    nn
    ar_JO
    bg
    kea
    nds
    zu
    am_ET
    fr_DZ
    ti_ET
  8. Um Locale também pode ser representado somente pelo idioma.

    src/org/j6toj8/localization/locale/Locale_LocaleLanguageOnly.java
    link:../../../src/org/j6toj8/localization/locale/Locale_LocaleLanguageOnly.java[role=include]
    Saída no console
    pt
    en
    es
    fr
Referências