Saltar al contenido

Integraciones

Plugin de Vite

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

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

Las opciones son las mismas que la config del CLI: sourceLocale, locales, dir, include, exclude, root. Las opciones inline ganan sobre el archivo de config.

Cómo compila

Servidor de dev

Build

El 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';

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

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

// client-side routing over pre-translated pages (render.inlineCatalog):
import { adoptPage } from 'virtual:verbaly';
adoptPage({ root: nextDocument, path: nextUrl.pathname });

El singleton t/verbaly es para el browser. En el servidor, createRequestInstance(locale) construye una instancia fresca por request y espera su catálogo antes de devolver: el contrato no-FOUC en una llamada. createInstance(options) queda para setups custom (mira Server-side).

adoptPage existe cuando render.inlineCatalog está encendido. Cada página lleva solo los mensajes que muestra, así que un router que cambia de documento tiene que entregar los de la siguiente: llámalo desde el hook que dispara antes del cambio. El <ClientRouter /> de Astro ya viene cableado.

Los tipos generados viven en src/verbaly.d.ts (la raíz si no hay src/), la carpeta que el tsconfig de las plantillas de Vite y SvelteKit ya lee, y tipan este módulo: las claves autocompletan y los params de cada clave se exigen. Un clon fresco los escribe con npx verbaly typegen antes de tsc. Muévelos o apágalos con la opción dts del config.

¿No usas Vite? Usa @verbaly/unplugin

@verbaly/unplugin lleva el mismo compilador a webpack 5, Rollup, esbuild y Rspack: el módulo tipado virtual:verbaly, la transformación de las plantillas etiquetadas y el reporte del build, que dice cada problema una vez aunque un watch recompile (failOnMissing: true para el build en su lugar).

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

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

Está enfocado al build: corre npx verbaly extract en tu dev loop o CI, ya que la extracción en vivo y el HMR siguen siendo el valor de este plugin de Vite. Solo ESM, como el compilador (usa webpack.config.mjs).

↑↓para moverteEnterpara abrir
Copiado en el portapapeles