Better Translatebetter-translate
  • Docs
  • CLI
  • Changelog
  • Docs
  • CLI
  • Changelog
GitHub
Misma config. Modelos hosteados o locales

Una configuración i18n para cualquier proyecto TypeScriptUna configuración i18n para cualquier proyecto TypeScript

Misma config. Misma API. Usa AI Gateway o modelos locales de Ollama en Next.js, Astro, React, TanStack Router y Node puro. Sin reescribir.

Ver docs
Ver en GitHub
Sponsorizar el proyecto
translate.ts
export const landingTranslationsConfig = {
  availableLocales: ["en", "es"] as const,
  defaultLocale: "en",
  fallbackLocale: "en",
  messages: { en, es },
} as const;

const translator = await configureTranslations(landingTranslationsConfig);

const { t } = createTranslationHelpers(translator);

t("hero.title")                    // -> "One i18n setup for any TypeScript project."
t("hero.descriptionParam", {
  params: {
    param1: "value1",
  }
})              // -> localized copy param
t("header.language", {
  locale: "es"
})                                 // -> "Idioma"
t("Write source strings", { bt: true })  // -> auto-extracted & keyed by CLI

Misma config en todas partes

Cambia de framework sin reescribir tu configuración i18n

TSTypeScriptbun add @better-translate/core
Astrobun add @better-translate/astro
Bunbun add @better-translate/core
Node.jsbun add @better-translate/core
Reactbun add @better-translate/react
Next.jsbun add @better-translate/nextjs
TanStack Routerbun add @better-translate/tanstack-router

Misma configuración. Cada entorno

La misma configuración, la misma API, la misma experiencia, sin importar en qué entorno TypeScript te encuentres.

Misma Config, Cada Entorno

Escribe tu configuración de traducción una vez. Funciona idénticamente en Next.js, Astro, React, TanStack Router y Node puro. Cambia de entorno, conserva tu configuración.

Type-Safe por Defecto

Inferencia completa de TypeScript en claves de traducción y variables de interpolación. Errores tipográficos y claves faltantes se convierten en errores de compilación.

Autocompletado en Todas Partes

Tu editor conoce cada clave en tu objeto de mensajes. No más adivinar porque `t("home.` comienza a completarse al instante.

Cambio de Localización

Cambia de localización en tiempo de ejecución sin recargar la página. Las anulaciones por llamada te permiten renderizar cualquier localización bajo demanda.

Hosteado o local. Mismo CLI

Genera archivos de localización con el mismo CLI, ya sea que uses AI Gateway o modelos locales de Ollama.

better-translate.config.ts
import { createOllama } from "ollama-ai-provider-v2";
import { defineConfig } from "@better-translate/cli/config";

const ollama = createOllama({
  baseURL: process.env.OLLAMA_BASE_URL ?? "http://127.0.0.1:11434/api",
});

export default defineConfig({
  sourceLocale: "en",
  locales: ["es", "fr"],
  model: ollama("qwen3:4b"),
  providerOptions: {
    ollama: {
      think: true,
    },
  },
  messages: {
    entry: "./src/messages/en.json",
  },
});

Tu framework, tu elección

Tu configuración de traducción funciona de la misma manera en cada entorno TypeScript. Adaptadores nativos, API idéntica.

TS

TypeScript

Tipos fuertes, autocompletado y feedback en tiempo de compilación de tus mensajes.

bun add @better-translate/core

Astro

Helpers con alcance de petición y colecciones de contenido localizadas de Astro para .md y .mdx.

bun add @better-translate/astro

Bun

Soporte nativo del runtime de Bun sin configuración extra.

bun add @better-translate/core

Node.js

Núcleo sin dependencias para scripts, servidores y trabajos en segundo plano.

bun add @better-translate/core

React

Contexto, hooks y renderizado del cliente consciente de localización para apps React.

bun add @better-translate/react

Next.js

Componentes de servidor, App Router y helpers de localización conscientes de rutas.

bun add @better-translate/nextjs

TanStack Router

Soporte de routing type-safe para proyectos de TanStack Router, incluyendo apps de TanStack Start.

bun add @better-translate/tanstack-router
Better Translate
DocsGitHubSponsornpm

MIT License · construido con TypeScript