Início
Primeiros passos
O Verbaly inverte o fluxo i18n habitual: você escreve texto natural no seu código e o compilador extrai as mensagens, gera chaves estáveis, tipos e bundles por idioma. Requisitos: Node 22.12+ e Vite 7 ou 8.
Instalação
Adicione o runtime, o plugin do Vite e o compilador, que é onde vive o comando
verbaly. Escolha seu gerenciador de pacotes.pnpm add verbaly @verbaly/vite @verbaly/compilerO runtime é sempre o mesmo; o segundo depende do seu setup. Em webpack, Rollup, esbuild ou Rspack você instala
@verbaly/unpluginno lugar, e Next.js, Nuxt e Astro têm o seu. Ver Pacotes.Gere tudo com um comando
npx verbaly initescreve a config, cria os catálogos delocales/e detecta o seu bundler, por isso te diz de qual plugin você precisa e onde ligá-lo. Nunca sobrescreve nada. Ligar o plugin é com você, e é o passo seguinte.Adicione o plugin
vite.config.tsimport verbaly from '@verbaly/vite'; export default { plugins: [verbaly({ sourceLocale: 'es' })], };sourceLocaleé o idioma em que você escreve. Se você não listarlocales, cada catálogo JSON emlocales/é um idioma: deixe ali umen.jsonoupt.jsone o Verbaly os detecta. Se listarlocales, essa lista é a lista inteira, então um arquivo que ficou esquecido é ignorado.Escreva texto, não chaves
src/app.tsimport { t, setLocale } from 'virtual:verbaly'; const saludo = t`Hola ${name}, tienes ${count} mensajes`; await setLocale('pt'); // lazy-loads pt chunkEm dev, o plugin extrai as mensagens ao vivo: seu catálogo fonte se preenche sozinho, os outros idiomas recebem placeholders
"", e os tipos gerados mantêm chaves e params tipados.Traduza e verifique
O que o módulo virtual exporta
| Export | Descrição |
|---|---|
| t | Traduz: t('key', params) ou o tagged t`...` |
| setLocale(locale) | Async: carrega o chunk desse idioma sob demanda e então troca |
| getLocale() | Idioma atual |
| subscribe(fn) | Re-executa a UI em mudanças de idioma/mensagens; retorna unsubscribe |
| verbaly | A instância subjacente (uso avançado) |