Skip to content

I18n

A classe I18n é responsável por executar a formatação específica do local. Você pode obter uma instância desta classe usando o método I18nManager.locale.

ts
import I18n from '@ioc:Adonis/Addons/I18n'

I18n.locale('en') // instanceof I18n

Métodos/Propriedades

A seguir está a lista de métodos/propriedades disponíveis na classe I18n.

locale

Referência ao locale para o qual você criou a instância.

ts
import I18n from '@ioc:Adonis/Addons/I18n'

I18n.locale('en').locale === 'en'

fallbackLocale

Uma referência somente leitura ao fallbackLocale. Traduções deste local serão usadas quando não estiverem disponíveis para o local principal.

ts
import I18n from '@ioc:Adonis/Addons/I18n'

I18n.locale('en').fallbackLocale

switchLocale

Alterne o local em tempo de execução. Chamar este método atualizará o locale e o fallbackLocale.

ts
import I18n from '@ioc:Adonis/Addons/I18n'

const i18n = I18n.locale('en')

// Troca para es
i18n.switchLocale('es')

validatorMessages

Retorna um objeto com um manipulador curinga para procurar mensagens para o validador. O método aceita um prefixo de chave de onde buscar as mensagens.

ts
import I18n from '@ioc:Adonis/Addons/I18n'

const i18n = I18n.locale('en')

I18n.validatorMessages('validator.shared')
I18n.validatorMessages('validator.contact')
I18n.validatorMessages('validator.signup')

hasMessage

Descubra se a mensagem para uma determinada chave foi definida ou não.

ts
import I18n from '@ioc:Adonis/Addons/I18n'

const i18n = I18n.locale('en')

if (i18n.hasMessage('messages.greeting')) {
  // faz alguma coisa
}

hasFallbackMessage

Descubra se a mensagem de fallback para uma determinada chave foi definida ou não.

ts
import I18n from '@ioc:Adonis/Addons/I18n'

const i18n = I18n.locale('en')

if (i18n.hasFallbackMessage('messages.greeting')) {
  // faz alguma coisa
}

formatMessage

Formate uma mensagem usando o formatador configurado (padrão para icu). Certifique-se de ler o guia detalhado sobre formatação de traduções.

  • O primeiro argumento é a chave da mensagem para formatar.
  • O segundo argumento são os dados de tempo de execução para passar para a mensagem.
ts
import I18n from '@ioc:Adonis/Addons/I18n'

const i18n = I18n.locale('en')

i18n.formatMessage('messages.greeting', { name: 'Virk' })

formatRawMessage

Formate uma mensagem a partir de uma string bruta.

  • O primeiro argumento é a mensagem bruta para formatar.
  • O segundo argumento são os dados de tempo de execução para passar para a mensagem.
ts
import I18n from '@ioc:Adonis/Addons/I18n'

const i18n = I18n.locale('en')

i18n.formatRawMessage('Hello {name}', { name: 'Virk' })

formatNumber

O formatNumber usa a classe Intl.NumberFormat para formatar um valor numérico.

  • O primeiro argumento é o valor a ser formatado. Deve ser um número, bigint ou uma representação de string de um número.

  • O segundo argumento são as opções. Elas são as mesmas que as opções aceitas pela classe Intl.NumberFormat.

ts
import I18n from '@ioc:Adonis/Addons/I18n'

I18n
  .locale('en')
  .formatNumber(123456.789, {
    maximumSignificantDigits: 3
  })

formatCurrency

O método formatCurrency usa a classe Intl.NumberFormat, mas define implicitamente o style para moeda.

ts
import I18n from '@ioc:Adonis/Addons/I18n'

I18n
  .locale('en')
  .formatCurrency(200, {
    currency: 'USD'
  })

formatDate

O método formatDate usa a classe Intl.DateTimeFormat para formatar uma data.

  • O primeiro argumento é a data a ser formatada. Pode ser uma string de data ISO, um timestamp, uma instância da classe JavaScript Date ou um luxon DateTime.
  • O segundo argumento são as opções. Elas são as mesmas que as opções aceitas pela classe Intl.DateTimeFormat.
ts
import I18n from '@ioc:Adonis/Addons/I18n'

I18n
  .locale('en')
  .formatDate(new Date(), {
    dateStyle: 'long'
  })

formatTime

O método formatTime usa a classe Intl.DateTimeFormat, mas implicitamente define o timeStyle como médio.

ts
import I18n from '@ioc:Adonis/Addons/I18n'

I18n
  .locale('en')
  .formatTime(new Date(), {
    timeStyle: 'long'
  })

formatRelativeTime

O método formatRelativeTime usando a classe Intl.RelativeTimeFormat para formatar um valor para uma string de representação de tempo relativo.

  • O primeiro argumento é o valor do tempo relativo. Pode ser uma string de data ISO, um diff numérico absoluto, uma instância da classe JavaScript Date ou uma instância de luxon DateTime.
  • unidades oficialmente suportadas, também suportamos uma unidade auto adicional.
  • O terceiro argumento são as opções. Elas são as mesmas que as opções aceitas pela classe Intl.RelativeTimeFormat.
ts
import { DateTime } from 'luxon'
import I18n from '@ioc:Adonis/Addons/I18n'

const luxonDate = DateTime.local().plus({ hours: 2 })
I18n
  .locale('en')
  .formatRelativeTime(luxonDate, 'hours')

Encontraremos a melhor unidade ao usar a unidade de formatação definida como auto. Por exemplo:

ts
const luxonDate = DateTime.local().plus({ hours: 2 })
I18n
  .locale('en')
  .formatRelativeTime(luxonDate, 'auto')

// In 2 hours 👈
ts
const luxonDate = DateTime.local().plus({ hours: 200 })
I18n
  .locale('en')
  .formatRelativeTime(luxonDate, 'auto')

// In 8 days 👈

formatPlural

O método formatPlural usa Intl.PluralRules e retorna uma categoria plural para um valor numérico fornecido.

  • O primeiro argumento é o valor. Deve ser um número ou uma representação de string de um número.
  • O segundo argumento são as opções. Elas são as mesmas que as opções aceitas pela classe Intl.PluralRules.
ts
import I18n from '@ioc:Adonis/Addons/I18n'

I18n.locale('en').formatPlural(0)
// other

I18n.locale('en').formatPlural(1)
// one

I18n.locale('en').formatPlural(2)
// other