Ir para o conteúdo
v0.72.0mais recente

Escreva texto natural. Publique traduções type-safe.

O compilador extrai suas mensagens, gera os tipos e separa os bundles por idioma. Cada build lista uma tradução faltando e o seu CI a barra, então ela nunca chega aos seus usuários.

Integrações
~3 KBruntime
13pacotes
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.

As keys são suas

Por padrão você não escreve nenhuma. Dê nome a elas quando quiser lê-las, ou declare-as em um módulo quando forem um contrato com algo fora do seu app, e o Verbaly verifica cada uma contra o seu catálogo. O texto não muda.

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,31 KB, zero deps (6,13 com DOM + urls)13,6 KB (23 com React)2 KB (4 com React)compilado, sem runtime compartilhado
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 faltantesFalha o CI, cada build a listaWarning em runtimeEtapa de CIO build falha
Traduções quebradasFalha o CI, cada build a lista———
Formato de catálogoJSON puroJSONPO / JSONFormato inlang
Agentes de códigoServidor MCP + skill—Skill—
VerbalyVerbaly
Keys e params type-safe
Inferidos do seu texto
Tamanho do runtime (gzip)
3,31 KB, zero deps (6,13 com DOM + urls)
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
Falha o CI, cada build a lista
Traduções quebradas
Falha o CI, cada build a lista
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)
13,6 KB (23 com 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)
2 KB (4 com React)
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)
compilado, sem runtime compartilhado
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
—

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, três pacotes: o runtime, o plugin e o comando.

     pnpm add verbaly @verbaly/vite @verbaly/compiler
  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  # exits 1 on a missing or broken translation

Sua primeira página traduzida, em cinco minutos.

Instale, adicione o plugin e escreva o texto. O Verbaly extrai as mensagens, gera os tipos e carrega cada idioma quando alguém pede.

Comece agora

Já tem catálogos? Abra no Studio

Copiado para a área de transferência