
Guia Completo sobre a API Intl no JavaScript
Descubra como a API Intl pode simplificar a internacionalização de números, datas, textos e muito mais no JavaScript
A internacionalização (i18n) é uma parte essencial do desenvolvimento de aplicações web modernas. Ao criar interfaces globais, você precisa garantir que números, datas, moedas e textos sejam formatados corretamente para diferentes localizações e idiomas. Felizmente, o JavaScript oferece a poderosa API Intl (Internationalization API) para facilitar essa tarefa.
Este post vai explorar os principais recursos da API Intl, explicando como ela pode ser utilizada para formatar números, datas, pluralizar frases e muito mais. Seja você um desenvolvedor júnior ou sênior, este guia será útil para aplicar as melhores práticas de internacionalização.
Sumário
- O que é a API
Intlno JavaScript? - Formatação de Números com
Intl.NumberFormat - Manipulação de Datas com
Intl.DateTimeFormat - Comparação de Strings com
Intl.Collator - Pluralização com
Intl.PluralRules - Formatação de Tempo Relativo com
Intl.RelativeTimeFormat - Conclusão
O que é a API Intl no JavaScript?
A API Intl (Internationalization API) é uma ferramenta poderosa no JavaScript para lidar com a formatação de números, datas, textos e mensagens em diferentes localizações e idiomas. Vamos explorar alguns dos principais recursos dessa API e como ela pode ser aplicada no dia a dia.
Exemplo simples:
const number = 1234567.89;
console.log(new Intl.NumberFormat('en-US').format(number)); // Saída: 1,234,567.89
Neste exemplo, Intl.NumberFormat é usado para formatar um número de acordo com o padrão dos EUA, separando as casas decimais e os milhares conforme as convenções locais.
Formatação de Números com Intl.NumberFormat
2.1 Formatação Simples de Números
Você pode usar Intl.NumberFormat para formatar números inteiros e decimais de acordo com as convenções regionais.
const number = 1234567.89;
console.log(new Intl.NumberFormat('pt-BR').format(number)); // Saída: 1.234.567,89
2.2 Formatação de Moedas
Utilize Intl.NumberFormat para formatar valores monetários de acordo com diferentes moedas.
const currencyFormat = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' });
console.log(currencyFormat.format(1234567.89)); // Saída: $1,234,567.89
2.3 Formatação de Percentuais
Você também pode formatar percentuais de forma prática.
const percentFormat = new Intl.NumberFormat('en-US', { style: 'percent' });
console.log(percentFormat.format(0.4567)); // Saída: 45.67%
Manipulação de Datas com Intl.DateTimeFormat
3.1 Formatação Simples de Datas
const date = new Date();
console.log(new Intl.DateTimeFormat('en-US').format(date)); // Saída: 10/23/2024
3.2 Formatação Completa de Data e Hora
Você pode personalizar a formatação de datas, incluindo o fuso horário e os detalhes de hora.
const formattedDateTime = new Intl.DateTimeFormat('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
timeZone: 'America/New_York',
}).format(new Date());
console.log(formattedDateTime); // Saída: October 23, 2024 at 12:00 PM
Comparação de Strings com Intl.Collator
4.1 Ordenação Sensível a Maiúsculas e Acentos
Use o Intl.Collator para ordenar strings de acordo com as regras de um idioma específico, levando em consideração acentos e maiúsculas/minúsculas.
const collator = new Intl.Collator('pt-BR', { sensitivity: 'base' });
const fruits = ['maçã', 'Banana', 'laranja', 'abacaxi'];
const sortedFruits = fruits.sort(collator.compare);
console.log(sortedFruits); // ['abacaxi', 'Banana', 'laranja', 'maçã']
Pluralização com Intl.PluralRules
5.1 Uso Simples para Singular e Plural
Utilize Intl.PluralRules para adaptar frases de acordo com o número de itens.
const pr = new Intl.PluralRules('en-US');
const count = 3;
const messages = { one: 'You have one message.', other: 'You have multiple messages.' };
console.log(messages[pr.select(count)]); // Saída: You have multiple messages.
Formatação de Tempo Relativo com Intl.RelativeTimeFormat
6.1 Diferenças de Tempo Relativo
Formate diferenças de tempo em relação ao presente, como "há 2 dias" ou "em 5 minutos".
const rtf = new Intl.RelativeTimeFormat('en', { numeric: 'auto' });
console.log(rtf.format(-2, 'day')); // Saída: 2 days ago
console.log(rtf.format(5, 'minute')); // Saída: in 5 minutes
Conclusão
A API Intl no JavaScript oferece diversas ferramentas úteis para lidar com internacionalização de forma eficiente. Seja para formatar números, datas, strings ou até mensagens dinâmicas, Intl facilita o desenvolvimento de interfaces globais sem a necessidade de reinventar a roda.