Framework
Plugin do Vite
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
t`Hola ${name}`virat("x7Ka9q2f", { "name": name }), onde a chave é o hash do conteúdo, estável entre arquivos.- O idioma fonte vai inline; cada outro idioma vira seu próprio chunk lazy, carregado no primeiro
setLocale(). - Os catálogos seguem JSON puro: sem formato proprietário, portáveis para qualquer TMS.
- Desde
0.20.0isso cobre também arquivos.sveltee.vue: blocos de script e markup, incluindo a forma de store$tdo Svelte.
Servidor de dev
- Os textos novos são extraídos enquanto você digita; catálogos e
verbaly.d.tsatualizam com debounce, e o servidor dispara um reload completo. - Editar um catálogo JSON à mão invalida os módulos virtuais automaticamente.
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).
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).