# Intl

O objeto `Intl` é o namespace da ECMAScript Internationalization API. Ele oferece recursos sensíveis ao idioma, como comparação de strings, formatação de números e formatação de datas e horas. `Intl` contém os construtores desses recursos e as funções que eles compartilham com outros métodos sensíveis ao idioma. Para mais informações, consulte [Intl](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) no MDN Web Docs.

Em uma function com deploy feito, `Intl.DateTimeFormat().resolvedOptions()` informa a localidade `en-US` e o fuso horário `UTC`. Uma data que você formata sem a opção `timeZone` é formatada em UTC.

> **nota**
>
> Com `azion dev`, o fuso horário padrão é o da máquina que o executa, não `UTC`. Em uma máquina cujo fuso horário está atrás do UTC, o exemplo desta página registra `5/23/2012` e `23.5.2012` localmente. Passe `timeZone: 'UTC'` para formatar a mesma data nos dois ambientes.

---

## Construtores

Todos os construtores desta tabela funcionam em uma function com deploy feito:

| Construtor                                                                                                                                                 | Descrição                                                                                           |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| [`Intl.Collator()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/Collator)                               | Cria um collator, um objeto que compara strings pelas regras de um idioma.                          |
| [`Intl.DateTimeFormat()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat)             | Cria um objeto que formata datas e horas pelas regras de um idioma.                                 |
| [`Intl.DisplayNames()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DisplayNames/DisplayNames)                   | Cria um objeto que traduz de forma consistente os nomes de exibição de idiomas, regiões e scripts.  |
| [`Intl.ListFormat()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat/ListFormat)                         | Cria um objeto que formata listas pelas regras de um idioma.                                        |
| [`Intl.Locale()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/Locale)                                     | Cria um objeto que representa um identificador de localidade Unicode.                               |
| [`Intl.NumberFormat()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat)                   | Cria um objeto que formata números pelas regras de um idioma.                                       |
| [`Intl.PluralRules()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/PluralRules/PluralRules)                      | Cria um objeto que aplica as regras de plural de um idioma, para uma formatação sensível ao plural. |
| [`Intl.RelativeTimeFormat()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat) | Cria um objeto que formata tempo relativo, como `1 day ago`, pelas regras de um idioma.             |
| [`Intl.Segmenter()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/Segmenter)                            | Cria um objeto que divide um texto em segmentos, como palavras, pelas regras de uma localidade.     |

---

## Métodos

Os dois métodos são estáticos: chame-os em `Intl`.

| Método                                                                                                                                           | Descrição                                                                                                                                                                |
| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [`Intl.getCanonicalLocales(locales)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/getCanonicalLocales) | Retorna os nomes canônicos das localidades que você passa. Por exemplo, `['EN-us', 'pt-br']` retorna `['en-US', 'pt-BR']`.                                               |
| [`Intl.supportedValuesOf(key)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/supportedValuesOf)         | Retorna um array ordenado dos valores únicos que a implementação suporta para `key`: calendários, collations, moedas, sistemas de numeração, fusos horários ou unidades. |

---

## Exemplo

Este código formata uma data e um número na forma que dois idiomas e regiões esperam e registra cada resultado. Os comentários mostram as linhas que uma function com deploy feito registra:

```javascript
const count = 26254.39;
const date = new Date("2012-05-24");

function log(locale) {
  console.log(
    `${new Intl.DateTimeFormat(locale).format(date)} ${new Intl.NumberFormat(
      locale,
    ).format(count)}`,
  );
}

log("en-US"); // 5/24/2012 26,254.39

log("de-DE"); // 24.5.2012 26.254,39
```

`new Date("2012-05-24")` lê uma string só com a data como meia-noite UTC, e o fuso horário após o deploy é `UTC`, então as duas localidades exibem 24 de maio. Para formatar uma data em outro fuso horário, passe o fuso na opção `timeZone`. Em uma function com deploy feito, `new Date(0).toLocaleString('en-US', { timeZone: 'America/Sao_Paulo' })` retorna `12/31/1969, 9:00:00 PM`.

---

## Recursos relacionados

- [Globais](/pt-br/documentacao/devtools/runtime/api-reference/azion-runtime-globals.md): Os objetos globais, `Intl` entre eles, que uma function usa sem um import.
- [Como o Azion Runtime funciona](/pt-br/documentacao/devtools/runtime/como-funciona.md): Onde `azion dev` difere do runtime com deploy feito, incluindo o fuso horário de `Intl`.
- [Padrões web](/pt-br/documentacao/devtools/runtime/api-reference/web-standards.md): Os padrões JavaScript que o Azion Runtime segue.
- [Web APIs](/pt-br/documentacao/devtools/runtime/api-reference/javascript.md): Todas as outras Web APIs que uma function pode chamar no Azion Runtime.
