Vários idiomas
Servir a interface em vários idiomas, e traduzir também as páginas.
Os textos do tema estão traduzidos em sete locales. Um site serve o subconjunto que quiser, traduz os textos que ele próprio configurou e — se quiser — também as páginas.
Passos
- Reduz a lista com
duxt.locales.locales: ['en-GB', 'pt-PT']
Não o arraylocalesdo i18n: esse combina entre camadas em vez de substituir, por isso declarar dois aí deixa os outros cinco roteados e anunciados emhreflang. - Escolhe o que fica sem prefixo no
nuxt.config.tscomi18n.defaultLocale. É relevante para o URL: mudá-lo mais tarde move todas as páginas nos dois sentidos ao mesmo tempo. - Traduz os teus próprios textos. Para um punhado, a forma de registo custa
menos do que um ficheiro de locale por idioma:
sections: [ { label: { 'en-GB': 'Guides', 'pt-PT': 'Guias' }, to: '/guides', icon: 'lucide:book-open' } ]
Para mais do que um punhado, regista as tuas próprias chaves i18n e escreve a chave. Não recorras aduxt.defaults.*— são as chaves internas da camada, e uma mudança de nome aí partiria o teu site em silêncio. - Define a origem.
hreflangnão é válido em relativo, por isso precisa dei18n.baseUrlouNUXT_PUBLIC_I18N_BASE_URL. - Traduz as páginas, se quiseres. Uma pasta por idioma dentro da fonte; o
locale por omissão fica onde está e não move nenhum URL:
sources: [{ path: 'docs', locales: ['en-GB', 'pt'] }]
- index.md
- 1.getting-started
- index.md
- pt
- index.md
Traduz tão poucas páginas quanto quiseres — tudo o resto recai no original, com um aviso que diz ao leitor porquê.
- Abre uma página em cada locale e verifica que a interface mudou de idioma, que o caminho continua a resolver e que nenhum rótulo configurado aparece como chave em bruto.
Só algumas versões, ou outro repositório
locales numa ref sobrepõe-se ao da fonte, que é a forma habitual: a versão
atual está traduzida e as duas anteriores não.
{
path: 'docs',
locales: ['en-GB', 'pt'],
refs: [
{ tag: 'v2.0.0' }, // ambos os idiomas
{ tag: 'v1.0.0', locales: ['en-GB'] } // só o original
]
}
A forma de objeto move um idioma completamente para outro sítio — o seu próprio repositório, com os seus próprios responsáveis e o seu próprio ritmo:
locales: ['en-GB', { locale: 'pt', repo: 'acme/docs-pt', path: 'docs' }]
É o que o React e o Vue fazem fora das suas ferramentas, com de.react.dev e a
organização vuejs-translations, porque quem traduz trabalha com o seu próprio
calendário e a sua própria revisão. Aqui é uma entrada de fonte em vez de um
segundo site — um índice de pesquisa, um seletor de idioma.
Cerca de dois segundos de compilação e 0,6 MB de base de dados por idioma × versão × repositório, medido linear até pelo menos 200 coleções. Traduzir todas as versões de todos os repositórios multiplica os três; traduzir apenas a versão atual é o que a maioria dos projetos faz.
Quando uma página não tem tradução
O leitor recebe o idioma mais próximo que a tenha, com um aviso, e a página leva
noindex mais um canonical a apontar para o idioma em que realmente está. A
cadeia — locale, língua base, região irmã, fallbackLocale, original — está em
Localização.
Lista de verificação
-
duxt.localeslista exatamente os locales que serves -
/sitemap.xmlcontém uma entrada por página e locale, e mais nenhuma - As ligações
hreflangsão absolutas - Nenhum rótulo configurado aparece como chave em bruto
- Mudar de locale mantém o leitor na mesma página
- Uma página que não traduziste mostra o aviso de recurso, não um 404
-
duxt.sourceOptions.defaultLocalecorresponde ai18n.defaultLocale