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.
import I18n from '@ioc:Adonis/Addons/I18n'
I18n.locale('en') // instanceof I18nMé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.
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.
import I18n from '@ioc:Adonis/Addons/I18n'
I18n.locale('en').fallbackLocaleswitchLocale
Alterne o local em tempo de execução. Chamar este método atualizará o locale e o fallbackLocale.
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.
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.
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.
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.
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.
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.
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.
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, umtimestamp, uma instância da classe JavaScriptDateou um luxonDateTime. - O segundo argumento são as opções. Elas são as mesmas que as opções aceitas pela classe
Intl.DateTimeFormat.
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.
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 JavaScriptDateou uma instância de luxonDateTime. - unidades oficialmente suportadas, também suportamos uma unidade
autoadicional. - O terceiro argumento são as opções. Elas são as mesmas que as opções aceitas pela classe
Intl.RelativeTimeFormat.
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:
const luxonDate = DateTime.local().plus({ hours: 2 })
I18n
.locale('en')
.formatRelativeTime(luxonDate, 'auto')
// In 2 hours 👈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.
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