Pular para o conteúdo
duxt

Localização

A camada traz sete locales, e cada texto configurado assume três formas.

Os textos do próprio tema — rótulos de navegação, pesquisa, o aviso de versão, o 404 — são entregues traduzidos em en-GB, en-US, de-DE, es-ES, fr-FR, pt-PT e pt-BR. Um site escolhe quais serve com locales, e i18n.defaultLocale decide qual é servido sem prefixo de URL.

locales é lido em tempo de compilação: os locales decidem rotas e hreflang, não apenas o que um componente desenha, por isso alterar a lista exige nova compilação.

Cada texto configurado assume três formas

Tudo o que escreves na configuração — um rótulo, um título, uma descrição — pode ser um literal, uma chave i18n, ou um registo com um texto por locale:

label: 'Repository'                                       // literal
label: 'app.nav.repository'                               // chave própria
label: { 'en-GB': 'Repository', 'pt-PT': 'Repositório' }  // por locale

Qual delas é decide-se conforme o texto seja uma chave registada. Um site monolingue nunca encontra as outras duas formas, e um site com um punhado de textos em cinco idiomas não precisa de ficheiros de locale nenhuns — a forma de registo resolve pela língua base, por isso pt-PT cobre pt-BR e en-GB cobre en-US.

Não mexas nas chaves da camada

duxt.defaults.* traduz os valores por omissão que a própria camada entrega. Essas chaves são internas: renomear uma não é uma alteração incompatível da camada, e o i18n responde a uma chave em falta imprimindo a chave — quem dependesse de uma saberia por um leitor, não por uma compilação. Usa um literal, uma chave tua, ou a forma de registo.

Caminhos e ligações

Só os caminhos são localizados. useDuxtPath() dá o caminho onde está a documentação, sem o segmento de locale; useDuxtLink() volta a escrevê-lo como ligação, acrescentando o segmento de novo. Um URL absoluto, uma ligação de correio ou uma âncora isolada passam intactos. Tudo o que calcule um caminho de documentação deve passar por este par em vez de ler a rota diretamente.

Páginas traduzidas

A interface e as páginas são duas decisões separadas. Um site que nada diga serve uma mesma árvore em todos os locales — o enquadramento muda de idioma, o Markdown não — e essa é a forma certa para a maior parte da documentação.

locales numa fonte acrescenta a segunda metade:

sources: [{ path: 'docs', locales: ['en-GB', 'pt'] }]

O locale por omissão é a própria árvore em path, sem pasta própria, por isso acrescentar esta chave nunca move uma página já publicada. Qualquer outro idioma é uma pasta lá dentro — docs/pt/ — ou fica noutro sítio por completo; ver Vários idiomas.

Quando uma página não tem tradução

O leitor recebe o idioma mais próximo que a tenha, com um aviso a dizê-lo, e a página fica fora do índice sob noindex, com um canonical a apontar para o idioma que realmente a transporta. A cadeia é a mesma que a camada já aplica aos textos:

  1. o próprio locale — pt-PTpt-PT
  2. a sua língua base — pt-PT lê uma árvore pt, o que permite a uma pasta pt/ servir tanto pt-PT como pt-BR
  3. uma irmã da mesma língua — pt-BRpt-PT antes de sair do português
  4. fallbackLocale do vue-i18n, o mesmo valor por onde um texto em falta resolve
  5. o original por traduzir

Um 404 fica deliberadamente de fora: uma lacuna numa tradução pertence a quem escreve, e respondê-la escondendo a página castiga o leitor por isso.

Esta página foi útil?