# Fallback Localização
Resumo: Use fallbackLocale: '<lang>'
para escolher qual idioma usar quando seu idioma preferido não tiver uma tradução.
# Fallback implícito usando localidades
Se um locale
é fornecido contendo um território e um dialeto opcional, o fallback implícito é ativado automaticamente.
Por exemplo, para de-DE-bavarian
o seguinte será considerado como fallback:
de-DE-bavarian
de-DE
de
Para desativar a detecção automática de locais de fallback, especifique o caractere !
, Por exemplo, de-DE!
# Fallback explícito com um local
Às vezes, alguns itens não são traduzidas para outros idiomas. Neste exemplo, o item hello
está disponível no idioma inglês, mas não no português:
const messages = {
en: {
hello: 'Hello, world!'
},
pt: {
// Localização sem tradução para `hello`
}
}
Se você deseja usar (digamos) mensagens de localização de en
, quando a tradução não está na localização desejada, você deve defina a opção fallbackLocale
ao inicializar a instância VueI18n
:
const i18n = new VueI18n({
locale: 'pt',
fallbackLocale: 'en',
messages
})
Template:
<p>{{ $t('hello') }}</p>
O resultado será o seguinte:
<p>Hello, world!</p>
Por padrão, se as mensagens de localização de fallback de fallbackLocale
foram usadas, os avisos serão exibidos no console:
[vue-i18n] Value of key 'hello' is not a string!
[vue-i18n] Fall back to translate the keypath 'hello' with 'en' locale.
Para ocultar esses avisos (deixando aqueles em casos em que não há traduções para a chave fornecida), defina silentFallbackWarn: true
ao inicializar a instância VueI18n
.
# Fallback explícito com um array de localidades
Você pode especificar mais de um local de fallback usando um array.
Por exemplo:
fallbackLocale: ['pt', 'en'],
# Fallback explícito com mapas de decisão
Um algoritmo de tomada de decisão mais complexo para determinar o local de fallback pode ser implementado usando mapas de decisão com localidades em um fallback de acordo.
Por exemplo, usando o seguinte mapa de decisão
fallbackLocale: {
/* 1 */ 'de-CH': ['fr', 'it'],
/* 2 */ 'zh-Hant': ['zh-Hans'],
/* 3 */ 'es-CL': ['es-AR'],
/* 4 */ 'es': ['en-GB'],
/* 5 */ 'pt': ['es-AR'],
/* 6 */ 'default': ['en', 'ru']
},
Resultará nas seguintes cadeias de fallback
Local | fallback escolha |
---|---|
'de-CH' | de-CH > fr > it > en > ru |
'de' | de > en > ru |
'zh-Hant' | zh-Hant > zh-Hans > zh > en > ru |
'es-SP' | es-SP > es > en-GB > en > ru |
'es-SP!' | es-SP > en > ru |
'fr' | fr > en > ru |
'pt-BR' | pt-BR > pt > es-AR > es > en-GB > en > ru |
'es-CL' | es-CL > es-AR > es > en-GB > en > ru |
# Fallback interpolação
- Resumo: Defina
formatFallbackMessages: true
para fazer a interpolação do modelo nas chaves de tradução quando seu idioma não tiver uma tradução para uma chave. *
Como as chaves para as traduções são strings, você pode usar uma mensagem legível pelo usuário como uma chave (para um idioma específico).
Por exemplo:
const messages = {
pt: {
'Hello, world!': 'Olá Mundo!'
}
}
Isso pode ser útil porque você não precisa especificar uma tradução para o "Hello, world!" na localização em inglês.
Na verdade, você pode até incluir parâmetros de modelo em uma chave. Junto com formatFallbackMessages: true
, isso permite pular a escrita de modelos para o seu idioma base" e as chaves são seus modelos.
const messages = {
pt: {
'Hello {name}': 'Olá {name}'
}
}
const i18n = new VueI18n({
locale: 'pt',
fallbackLocale: 'en',
formatFallbackMessages: true,
messages
})
Template:
<p>{{ $t('Hello {name}', { name: 'John' }}) }}</p>
<p>{{ $t('The weather today is {condition}!', { condition: 'sunny' }) }}</p>
O resultado será o seguinte:
<p>Olá, John</p>
<p>The weather today is sunny!</p>