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 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.
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').fallbackLocale
switchLocale
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 JavaScriptDate
ou 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 JavaScriptDate
ou uma instância de luxonDateTime
. - 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
.
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