Referência
Configuração
Um ficheiro na raiz do seu projeto, e o plugin recebe o mesmo objeto, então uma opção significa o mesmo para o seu build e para a linha de comandos. As flags vencem o ficheiro.
export default {
sourceLocale: 'es',
locales: ['es', 'en', 'pt'],
};Os nomes aceites são verbaly.config.js, .mjs, .ts, .mts e .json, lidos nessa ordem. Um config em TypeScript precisa do esbuild instalado, e a ferramenta avisa se faltar.
Todas as opções
| Opção | Padrão | O que faz |
|---|---|---|
sourceLocale | 'en' | O idioma em que você escreve |
locales | Os catálogos que encontra | Os seus idiomas. Se você os listar, a lista está completa; se não, cada ficheiro JSON de dir conta como um |
dir | 'locales' | Onde vivem os catálogos |
root | Onde você executou o comando | A raiz do projeto contra a qual os outros caminhos são resolvidos |
include | src/**, app/** | Que ficheiros são varridos à procura de mensagens. [] desliga a varredura, para um projeto cujos catálogos são escritos à mão |
exclude | node_modules, dist | Que ficheiros são ignorados dentro disso |
routing | Segue o seu setup | Onde o idioma vive nos seus endereços. Ver Estratégia de URLs |
dts | 'verbaly.d.ts' | Onde os tipos gerados são escritos, ou false para não escrever nenhum. Astro e Nuxt colocam-nos na sua própria pasta de tipos sem você definir isto |
bundle | Nada excluído | exclude: grupos de mensagens que ficam no build e nunca chegam ao navegador |
render | Desligado | O espelho pré-traduzido para sites estáticos. As suas opções estão abaixo |
translate | Claude | Tudo o que a tradução automática precisa além do provedor: modelo, tamanho de lote, glossário, instruções |
icu | Os seus catálogos decidem | Força o parser de ICU a viajar. Só para mensagens que chegam ao seu app depois do build |
relative | Os seus catálogos decidem | O mesmo, para o formato de tempo relativo |
Dentro de render
Só para sites estáticos que publicam uma árvore de endereços por idioma. Adicionar esta secção é o que liga o espelho.
| Opção | O que faz |
|---|---|
baseUrl | O seu endereço público. Os alternates e o sitemap precisam dele |
site | O diretório construído a espelhar. Por padrão dist |
sitemap | Escreve um sitemap por idioma. Uma string dá nome ao ficheiro |
exclude | Páginas a deixar de fora desse sitemap, por caminho dentro do diretório de build |
hreflang | Alternates recíprocos em cada página. Ligado por padrão |
redirect | Envia quem chega pela primeira vez ao seu idioma antes de a página pintar |
links | Os endereços reais por trás dos links com nome dentro das suas mensagens |
base | O prefixo de caminho, se o seu site não é servido a partir da raiz |
attribute | O atributo a procurar, se você renomeou data-verbaly |
inlineCatalog | Escreve em cada página as mensagens que ela renderiza, então não baixa nenhuma outra |
clean | Remove páginas de idioma deixadas por um build anterior |
Dentro de translate
Tudo o que a tradução automática precisa além do provedor, para que uma execução se comporte igual para toda a equipa em vez de depender de quem escreveu o comando.
| Opção | O que faz |
|---|---|
model | Qual modelo o provedor incluído usa. --model troca isso para uma única execução |
batchSize | Quantas mensagens vão em uma requisição, 20 por padrão. Diminua se as mensagens longas saem cortadas, aumente se forem curtas |
concurrency | Quantas requisições vão ao mesmo tempo, 4 por padrão. Diminua se o seu provedor limita o ritmo |
retries | Quantas vezes uma requisição que falhou por algo passageiro é tentada de novo, 2 por padrão |
instructions | O mesmo que você contaria a uma pessoa que traduz o seu produto: quanta formalidade usar, quão curto o rótulo de um botão precisa ficar, o que é o seu aplicativo |
glossary | Como um termo tem que sair. Você dá uma forma para todos os idiomas, que é como se diz deixe isto em paz, ou uma por idioma. Só são enviados os termos que o lote realmente contém |
Uma execução sobrevive a uma conexão ruim. As requisições que falham por algo passageiro são tentadas de novo, e se ainda assim uma não voltar, todo o resto fica escrito e o relatório nomeia as mensagens que não conseguiu preencher. Rodar translate de novo pede só essas, então uma conexão caída nunca custa a execução inteira duas vezes. O comando termina com 1 quando isso acontece, para que um script perceba.
Só no plugin
failOnMissing: false deixa um build terminar com mensagens sem tradução, que caem para o seu idioma fonte. Nunca deixa passar uma tradução quebrada: uma que perdeu um valor ou um caso do plural continua a parar o build, porque renderizaria errado.