Framework

Plugin do Vite

vite.config.ts
import verbaly from '@verbaly/vite';

export default { plugins: [verbaly({ sourceLocale: 'es' })] };

As opções são as mesmas da config do CLI: sourceLocale, locales, dir, include, exclude, root. As opções inline vencem o arquivo de config.

Como compila

Servidor de dev

Build

O módulo virtual

import { t, verbaly, setLocale, getLocale, subscribe } from 'virtual:verbaly';

// SSR: request-scoped instances + locale metadata
import { createRequestInstance, createInstance, loadMessages, locales, sourceLocale } from 'virtual:verbaly';

// 0.17.0: fresh instance, catalog awaited, no flash. One call per request:
const v = await createRequestInstance(locale);

// 0.19.0: raw catalog for a locale (SSR integrations serialize it to the client):
const messages = await loadMessages(locale);

O singleton t/verbaly é para o browser. No servidor, createRequestInstance(locale) constrói uma instância nova por request e espera seu catálogo antes de devolver: o contrato no-FOUC em uma chamada. createInstance(options) fica para setups custom (veja Server-side).

verbaly.d.ts (gerado na raiz do projeto) tipa este módulo: as chaves autocompletam e os params de cada chave são exigidos. Commite-o para que clones novos passem no typecheck antes do primeiro dev.

Não usa Vite? Use @verbaly/unplugin

Desde 0.10.0, o @verbaly/unplugin leva o mesmo compilador para webpack 5, Rollup, esbuild e Rspack: o módulo tipado virtual:verbaly, a transformação de tagged templates e o build gate (failOnMissing: false para desativar).

webpack.config.mjs
import { verbaly } from '@verbaly/unplugin';

export default { plugins: [verbaly.webpack({ locales: ['en', 'es'] })] };
// also: verbaly.rollup(…) · verbaly.esbuild(…) · verbaly.rspack(…)

É focado no build: rode npx verbaly extract no seu dev loop ou CI, já que a extração ao vivo e o HMR continuam sendo o valor deste plugin do Vite. Só ESM, como o compilador (use webpack.config.mjs).

Copiado para a área de transferência