Ir para o conteúdo
v0.45.0latest

Escrevatexto natural. Publiquetraduçõestype-safe.

O compilador extrai suas mensagens, gera os tipos e separa os bundles por idioma. Uma tradução faltando quebra o build, então ela nunca chega aos seus usuários.

Integrações
~3 KBruntime
12pacotes
MITlicença
i18n que parece sem config

Por que Verbaly

Quatro coisas que o compilador faz por você, e cada uma está rodando aqui mesmo.

Zero config, de verdade

Um plugin do Vite. Sem um init() gigante, sem macros do Babel, sem formatos proprietários. Os catálogos são JSON puro que você leva para qualquer lugar.

Onde você está

Um único runtime sob cada adaptador, então a mensagem que você escreve é a mesma em todos. Só muda o pacote.

Tipos das suas mensagens

O próprio texto declara seus params, então se você esquecer um o TypeScript te barra.

HTML puro, de primeira

Sem framework? O interpretador do DOM hidrata os nós data-verbaly, re-renderiza ao trocar o idioma e observa novos elementos.

O mesmo trabalho, menos maquinaria

Um olhar honesto frente às ferramentas que você usaria no lugar. Mostra onde o Verbaly ganha e onde as outras também funcionam bem.

FuncionalidadeVerbalyVerbalyi18nextLinguiParaglide
Keys e params type-safeInferidos do seu textoPlugin / manualParcialSim
Tamanho do runtime (gzip)3.00 KB, zero deps~14 KB (+9 KB react)~5 KB~0 (compilado)
Manutenção de keysNenhuma, extraídasÀ mãoEtapa extract → compileÀ mão
Conteúdo dinâmico / CMSRota runtime realSimSimFraco
HTML puro (sem framework)Interpretador de DOM
Traduções faltantesO build falhaWarning em runtimeEtapa de CIO build falha
Traduções quebradasO build falha
Formato de catálogoJSON puroJSONPO / JSONFormato inlang
Agentes de códigoServidor MCP + skillSkill
VerbalyVerbaly
Keys e params type-safe
Inferidos do seu texto
Tamanho do runtime (gzip)
3.00 KB, zero deps
Manutenção de keys
Nenhuma, extraídas
Conteúdo dinâmico / CMS
Rota runtime real
HTML puro (sem framework)
Interpretador de DOM
Traduções faltantes
O build falha
Traduções quebradas
O build falha
Formato de catálogo
JSON puro
Agentes de código
Servidor MCP + skill
i18next
Keys e params type-safe
Plugin / manual
Tamanho do runtime (gzip)
~14 KB (+9 KB react)
Manutenção de keys
À mão
Conteúdo dinâmico / CMS
Sim
HTML puro (sem framework)
Traduções faltantes
Warning em runtime
Traduções quebradas
Formato de catálogo
JSON
Agentes de código
Lingui
Keys e params type-safe
Parcial
Tamanho do runtime (gzip)
~5 KB
Manutenção de keys
Etapa extract → compile
Conteúdo dinâmico / CMS
Sim
HTML puro (sem framework)
Traduções faltantes
Etapa de CI
Traduções quebradas
Formato de catálogo
PO / JSON
Agentes de código
Skill
Paraglide
Keys e params type-safe
Sim
Tamanho do runtime (gzip)
~0 (compilado)
Manutenção de keys
À mão
Conteúdo dinâmico / CMS
Fraco
HTML puro (sem framework)
Traduções faltantes
O build falha
Traduções quebradas
Formato de catálogo
Formato inlang
Agentes de código

Os tamanhos são pegadas gzip aproximadas do runtime; cada projeto pondera os trade-offs de forma diferente.

De palavras a idiomas publicados

Três passos e uma barreira, ou deixe o verbaly init gerar tudo com um comando. Sem arquivos de keys à mão: o compilador faz a parte chata enquanto você continua escrevendo o copy do produto.

  1. Instale

    Um comando, dois pacotes.

     pnpm add verbaly @verbaly/vite
  2. Adicione o plugin

    Aponte para o idioma em que você escreve.

    vite.config.ts
    import verbaly from '@verbaly/vite';
    
    export default { plugins: [verbaly({ sourceLocale: 'es' })] };
  3. Escreva texto, não chaves

    Chaves, tipos e catálogos: gerados.

    src/app.ts
    import { t, setLocale } from 'virtual:verbaly';
    
    t`Hola ${name}`;      // keys, types & catalogs: generated
    await setLocale('pt'); // lazy-loads its chunk
  4. Deixe o CI vigiar

    Sai com 1 enquanto algum idioma estiver incompleto, então texto sem tradução nunca é publicado.

    .github/workflows/ci.yml
    - run: npx verbaly check  # the build gate, in your pipeline

Em breve você poderá quebrá-lo você mesmo.

Um playground sobre o runtime real: edite os catálogos, troque de idioma, esvazie uma tradução e veja o gate do build pegar o erro. Está sendo construído agora mesmo.

Enquanto isso, leia o guia
Copiado para a área de transferência