International Components for Unicode

Componentes Internacionais para Unicode ou International Components for Unicode (ICU) é um projeto de código aberto de bibliotecas C/C++ e Java para suporte ao Unicode, internacionalização de software e globalização de software. ICU é amplamente portátil para muitos sistemas operacionais e ambientes. Ele fornece aos aplicativos os mesmos resultados em todas as plataformas e entre software C, C++ e Java. O projeto ICU é um comitê técnico do Consórcio Unicode é patrocinado, apoiado e usado pela IBM e muitas outras empresas.

International Components for Unicode
Desenvolvedor Unicode Consortium
Plataforma Cross-platform
Lançamento 1999 (22–23 anos)
Versão estável 67.1 (22 de abril de 2020; há 2 anos)
Sistema operacional Cross-platform
Gênero(s) API
Licença Unicode License
Estado do desenvolvimento Ativo
Página oficial www.icu-project.org

ICU fornece os seguintes serviços: manipulação de texto Unicode, propriedades completas de caracteres e conversões de conjuntos de caracteres; Expressões regulares Unicode; conjuntos completos de Unicode; limites de caracteres, palavras e linhas; comparação e pesquisa sensíveis à linguagem; normalização, conversão de maiúsculas e minúsculas e transliterações de script; dados de local abrangente e arquitetura de pacote de recursos por meio do Common Locale Data Repository (CLDR); multi- calendário e fusos horários ; e formatação e análise baseadas em regras de datas, horas, números, moedas e mensagens. ICU fornecia serviço de layout de texto complexo para árabe, hebraico, índico e tailandês historicamente, mas isso foi descontinuado na versão 54 e foi completamente removido na versão 58 em favor do HarfBuzz .[1]

ICU fornece recursos de internacionalização mais extensos do que as bibliotecas padrão para C e C ++. ICU 67 oferece suporte a Unicode 13.0 e trata da remoção da Grã-Bretanha das regiões da UE . ICU 64 suporta Unicode 12.0, enquanto ICU 64.2 adicionou suporte para Unicode 12.1, ou seja, o novo símbolo único para a era atual Reiwa japonesa (mas o suporte para ele também foi retransmitido para versões mais antigas de ICU até ICU 4.8.2). ICU 58 (com suporte a Unicode 9.0) é a última versão a oferecer suporte a plataformas mais antigas, como Windows XP, Windows Vista . O suporte para AIX, Solaris ez / OS também é limitado em versões posteriores.[2]

ICU tem usado historicamente UTF-16 e ainda usa apenas para Java; enquanto para C / C ++ UTF-8 é suportado,[3] incluindo o tratamento correto de "UTF-8 ilegal".[4]

Origem e desenvolvimentoEditar

Depois que a Taligent se tornou parte da IBM no início de 1996, a Sun Microsystems decidiu que a nova linguagem Java deveria ter um suporte melhor para internacionalização. Como a Taligent tinha experiência com essas tecnologias e era próxima geograficamente, seu grupo de texto internacional foi convidado a contribuir com as classes internacionais para o Java Development Kit como parte das APIs de internacionalização JDK 1.1.[5] Uma grande parte desse código ainda existe nos pacotes java.text e java.util. Outros recursos de internacionalização foram adicionados a cada versão posterior do Java.

As classes de internacionalização Java foram então portadas para C ++ e C [6] como parte de uma biblioteca conhecida como ICU4C ("ICU for C"). O projeto ICU também fornece ICU4J ("ICU para Java"), que adiciona recursos não presentes nas bibliotecas Java padrão. ICU4C e ICU4J são muito semelhantes, embora não idênticos; por exemplo, ICU4C inclui uma API de Expressão Regular, enquanto ICU4J não. Ambas as estruturas foram aprimoradas ao longo do tempo para oferecer suporte a novos recursos e novos recursos de Unicode e Common Locale Data Repository (CLDR).

ICU foi lançado como um projeto de código aberto em 1999 com o nome IBM Classes for Unicode. Posteriormente, foi renomeado para International Components For Unicode.[7] Em maio de 2016, o projeto ICU passou a fazer parte do consórcio Unicode como comitê técnico ICU-TC, e as fontes da biblioteca agora são distribuídas sob a licença Unicode.[8]

MessageFormatEditar

Uma parte do ICU é a classe MessageFormat, É um sistema de formatação de "localização 2.0" (l20n) que permite qualquer número de argumentos para controlar a forma plural ( plural, selectordinal ) ou selectordinal mais geral no estilo switch-case ( select ) para as coisas como gênero gramatical . Essas instruções podem ser aninhadas.[9] Uma porta JavaScript desta biblioteca é comumente usada por desenvolvedores de Angular.js em combinação com ngx-translate, para que a biblioteca simples baseada em chave possa lidar com entradas de localização diferenciadas.[10] Um exemplo para este sistema pode ser:

// Using the simple form of https://messageformat.github.io/messageformat/page-build
import msg from './example.yaml'
function say(messageKey, options) { console.log(msg[messageKey](options)) }

say('hello', {user: 'Jimmy'}) // Hello, Jimmy!
say('party', {user: 'Whales', player_count: 5000, user_gender: 'male'})  // Whales has invited 4999 players to his game.
say('party', {user: 'Dolphin', player_count: 20, user_gender: 'other'})  // Dolphin has invited 19 players to their game.
say('party', {user: 'Elephant', player_count: 1, user_gender: 'female'}) // Elephant has invited nobody to her game.

Observe que o próprio ICU não chama MessageFormat como um sistema l20n. O termo vem de uma biblioteca JavaScript de mesmo nome da Mozilla com uma funcionalidade semelhante, que foi substituída por outro sistema JavaScript chamado "Fluent" mais tarde.

ICU MessageFormat foi criado adicionando o sistema de plural e de seleção a um sistema com nome idêntico em Java SE.

Veja tambémEditar

Referências

  1. «Layout Engine - ICU User Guide». userguide.icu-project.org 
  2. «Download ICU 64 - ICU - International Components for Unicode». site.icu-project.org. Consultado em 20 de outubro de 2019 
  3. «UTF-8 - ICU User Guide». userguide.icu-project.org. Consultado em 3 de abril de 2018 
  4. «#13311 (change illegal-UTF-8 handling to Unicode "best practice")». bugs.icu-project.org. Consultado em 3 de abril de 2018 
  5. Laura Werner (1999). «Getting Java ready for the world: A brief history of IBM and Sun's internationalization efforts» 
  6. «ICU User Guide». userguide.icu-project.org 
  7. «ICU Project Management Committee» 
  8. «ICU joins the Unicode Consortium». Unicode, Inc. 16 de maio de 2016. Consultado em 1 de agosto de 2016 
  9. «Formatting Messages». ICU User Guide 
  10. «messageformat (js)». GitHub Pages 

links externosEditar