@weglot/translate-react
Traduce tu
React,
Next.js o
Vite app
Sin envoltorios t(), sin archivos JSON. Añade un complemento de compilación y una clave de API de Weglot : el texto de tu JSX se traduce cuando se compila tu app, y tu equipo edita las traducciones en Weglot sin tener que tocar el código.
Copia el mensaje de la línea de comandos para · · · lee la documentación · ver en npm
Más de 111.368 empresas de todo el mundo confían en Weglot para traducir sus sitios web
// what your users see
El JSX que has escrito, en todos los idiomas
Escribe el texto una vez. Weglot lo traduce en el momento de la compilación.
El mismo botón, cinco idiomas. Anchos medidos en tiempo real.
export default function Settings() { return ( <button>Save changes</button> ); } // no key, no t(), no en.json
Sin claves, sin t(). Escribe el texto en JSX, y ya está.
// how it works
Cuatro pasos. Tus componentes se quedan tal y como están.
Los idiomas de origen y de destino provienen de tu proyecto de Weglot , no de tu código. El complemento lee el texto de tu JSX en el momento de la compilación y recupera sus traducciones.
-
Instala el paquete y añade tu clave API
Crea un proyecto de « Weglot » 2.0 y, a continuación, copia la clave API desde la configuración del proyecto. Empieza por
pk_. Mantén.envfuera del control de versiones.terminal · .env$ npm install @weglot/translate-react # .env WEGLOT_API_KEY=pk_your_weglot_api_key
-
Añade el complemento
Envuelve tu configuración de Next.js con
withWeglot. PuntosourceRoota la carpeta donde tienes tus páginas y componentes.Añadir
weglotPluginen tu configuración de Vite. Con Webpack, impórtalo desde@weglot/translate-react/webpacken cambio.next.config.tsimport type { NextConfig } from "next"; import { withWeglot } from "@weglot/translate-react/next"; const nextConfig: NextConfig = {}; export default async function (): Promise<NextConfig> { return await withWeglot(nextConfig, { sourceRoot: "./app" }); }
vite.config.tsimport { defineConfig } from "vite"; import { weglotPlugin } from "@weglot/translate-react/vite"; export default defineConfig({ plugins: [weglotPlugin({ sourceRoot: "src" })], });
-
Añade el proveedor
Envuelve tu diseño raíz con
WeglotProviderdesde el punto de entrada de Next.js, para que al cambiar de idioma se actualicen tus componentes de servidor.Envuelve tu app con
WeglotProvider, lo antes posible.app/layout.tsximport { WeglotProvider } from "@weglot/translate-react/react/next"; export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en"> <body> <WeglotProvider>{children}</WeglotProvider> </body> </html> ); }
src/main.tsximport { WeglotProvider } from "@weglot/translate-react/react"; root.render( <WeglotProvider> <App /> </WeglotProvider>, );
-
Compila y distribuye en todos los idiomas de tu proyecto
Cada compilación descarga las traducciones que faltan de Weglot y guarda
public/translations/<locale>.json. No hagas caso a esa carpeta. Añade un selector de idioma conLocaleSwitcherouseWeglotContext..gitignorepublic/translations/
// under the hood
¿Qué pasa cuando construyes?
- 01Leetu JSX
- 02Envíaun nuevo mensaje
- 03 «Weglot » se traduce como
- 04 Creaun archivo por cada idioma
// every language of your project
Una única compilación, todos los idiomas que añadas
Elige los idiomas en Weglot. La próxima versión los incluirá.
enAñade un idioma en Weglot y, a continuación, compila. Los archivos de traducción se implementarán junto con tu aplicación.
// built for coding agents
Tu agente se encarga de todo
No hay que reescribir ninguna cadena, así que el cambio es pequeño y fácil de revisar.






Cualquier agente de programación. Pega una instrucción en el agente que ya usas.
Los agentes de Docs pueden leerlo. Un índice llms.txt y un archivo Markdown para cada página.
package.jsonnext.config.tslayout.tsx.gitignore.envUn diff que puedes revisar. No se ha reescrito ninguna cadena.
Pega el código de Claude
Pegar en el cursor (modo Agente)
Pegar en Codex$ npm install @weglot/translate-react
Copia el mensaje. Sigue los mismos pasos que en la guía de inicio.
// what gets translated
El plugin distingue el texto del código
export default function Pricing() { return ( <section className="pricing"> <h2>Choose your plan</h2> <input placeholder="Email address" /> <a href="/signup">{"Start free trial"}</a> <span translate="no">Weglot</span> </section> ); }
El texto está traducido. Texto JSX, literales, constantes, alt, title, placeholder, aria-label.
El código se deja tal cual. Nombres de clases, URL, lógica.
Tú decides. Puedes dejar cualquier elemento tal cual o usar «data-weglot-skip».
// for your team
Edita y revisa sin tocar el código
Revisión en Weglot. Los equipos de producto, marketing y traducción revisan el texto.
No se aceptan pull requests para corregir una palabra.
Lleva un control de lo que se ha revisado. Consulta el progreso de cada idioma.
// fit
Cuándo usar « Weglot » y cuándo no
El paquete está en fase de vista previa. Aquí es donde encaja ahora mismo.
Enrutador de aplicaciones de Next.js
CompatibleNext.js 15 o 16.0.4 o superior, React 19.
Vite
CompatibleReact 19, Node 20.9 o superior. Webpack también funciona.
Componentes de servidor de React
CompatibleAl cambiar de idioma, se actualizan los componentes de tu servidor.
Contenido de CMS y API
CompatibleCon tDynamic en los componentes de servidor de Next.js.
Edición por parte de personas que no son desarrolladores
CompatibleRevísalo y edítalo en el panel de control de Weglot .
Una URL por idioma
Todavía noHoy en día, el idioma se guarda en una cookie. Ahora necesitas URL indexadas por idioma: usa next-intl o Paraglide JS.
Traducciones en forma de archivos repo
Acción de traducciónWeglot traduce tus archivos JSON de configuración regional en GitHub Actions y abre una solicitud de incorporación de cambios. Consulta la documentación →
React 18, enrutador de páginas
No es compatibleTambién Next.js 14 o versiones anteriores.
CMS o creador de páginas web
Este paquete noTu página web no está hecha con React: usa las integraciones con CMS de Weglot.
// compare
¿Por qué no una biblioteca clásica de i18n?
Las bibliotecas de i18n te piden que sustituyas cada cadena por una clave y que mantengas un archivo por idioma. Weglot lee las cadenas que ya has escrito. Aquí tienes una comparación de las opciones.
| Criterios | Weglot@weglot/translate-react |
next-intl / i18next | Paraglide JS | Localización nativa de CMS |
|---|---|---|---|---|
| Envuelve las cadenas en funciones `t()` o de mensajes | Notext en JSX se detecta durante la compilación. | Sít("key") para cada cadena. |
Sím.key() funciones de mensajes. |
Solo contenidoLas cadenas de tu código siguen necesitando una biblioteca. |
| Archivos de traducción por idioma | No hay que mantener nadaSe genera al compilar, ignorado por Git. | SíNormalmente, un archivo JSON por configuración regional. | SíUn archivo de mensajes por configuración regional. | Noalmacenado en el CMS. |
| Redirigir en varios idiomas y SEO (URL por idioma, hreflang) | Todavía noEl idioma se guarda en una cookie. Las mismas URL para todos los idiomas; el idioma de origen está indexado. | next-intl: síEnrutamiento por configuración regional integrado. i18next: a través de la configuración de tu framework. | SíURL localizadas integradas: prefijos de configuración regional, rutas traducidas o dominios. Añade tú mismo las etiquetas hreflang. | Front-endUn CMS sin interfaz almacena el contenido por configuración regional. Las URL y los atributos hreflang provienen de tu interfaz de usuario. |
| Traducciones generadas para ti | SíWeglot se traduce con un LLM durante la compilación. | NoTrae tus propias traducciones o un sistema de gestión de traducciones (TMS). | Con herramientasla traducción automática de inlang CLI o tu agente de programación. | Complemento de pagoTraducción con IA en los planes de pago: Contentful AI Actions, Sanity AI Assist, Strapi AI Translations. |
| Editar traducciones sin necesidad de un desarrollador | SíRevísalo y edítalo en el panel de control de Weglot . | NoEdita los archivos JSON ni añadas un TMS aparte. | Con Finkel editor web de inlang, con una cuenta de GitHub. | SíEn el editor del CMS. |
| Creado por un agente de programación en una sola instrucción | SíUna instalación, dos cambios en la configuración. A continuación tienes el comando para copiar. | Tarea largaEl agente convierte cada cadena en claves y archivos. | Una tarea largainit si se ejecuta sin solicitar agentes, entonces cada cadena se convierte en un m.key() mensaje. |
n/aSe configura en el CMS. |
Preguntas frecuentes
¿Funciona bien con el SEO: una URL por idioma y hreflang?
Hoy no. El idioma del visitante se guarda en una cookie y todos los idiomas se muestran en las mismas URL, así que los motores de búsqueda solo indexan el idioma de origen.
Puedes traducir los títulos y las descripciones de las páginas con tDynamicAll en generateMetadata. Si ahora mismo necesitas URL indexadas por idioma, usa una biblioteca con enrutamiento por configuración regional, como next-intl o Paraglide JS.
¿Cómo traduzco contenido dinámico procedente de un CMS, una API o de los usuarios?
El plugin solo traduce el texto que aparece en tu código. Para el contenido al que tu código nunca tiene acceso, llama a tDynamic, tDynamicAll o tDynamicHtml de @weglot/translate-react/dynamic en los componentes de servidor de Next.js.
Si la API tarda más de 500 ms, o si se solicita un texto por primera vez, devuelven el texto original. La traducción estará lista en una solicitud posterior. Si almacenas los datos en caché tú mismo, haz que la caché dependa del idioma del visitante.
Next.js o Vite: ¿qué cambia?
Next.js utiliza withWeglot de @weglot/translate-react/next y WeglotProvider de @weglot/translate-react/react/next. Vite utiliza weglotPlugin de @weglot/translate-react/vite y WeglotProvider de @weglot/translate-react/react. Webpack utiliza weglotPlugin de @weglot/translate-react/webpack.
Las funciones de contenido dinámico solo se ejecutan en los componentes de servidor de Next.js.
¿Funciona con los componentes de servidor de React?
Sí, con el App Router de Next.js. Importa WeglotProvider de @weglot/translate-react/react/next para que, al cambiar de idioma, se actualicen los componentes de tu servidor. tDynamic, tDynamicAll y tDynamicHtml se ejecutan en el lado del servidor, en los componentes del servidor.
¿Qué pasa cuando compilo?
El plugin busca el texto en el JSX dentro de sourceRoot y solicita a la API de Weglot las traducciones que le faltan. Weglot las genera con un modelo de lenguaje grande (LLM), y la compilación espera hasta translationTimeout (300 segundos por defecto). A continuación, escribe public/translations/<locale>.json.
Si la traducción falla, la compilación falla y guarda lo que ha recibido en la caché local: vuelve a compilar para continuar. Con buildMode: "cache-only", la compilación no realiza ninguna llamada de red.
¿Dónde se guardan las traducciones?
En tu proyecto « Weglot », donde las revisas y editas. Cada compilación también conserva las traducciones que ha recibido en <sourceRoot>/weglot/cache/<locale>.json. Incorpora esa carpeta a la compilación sin llamar a la API, o ignórala. public/translations/ se genera y va a .gitignore.
¿Qué es lo que se traduce y cómo puedo excluir algo?
Texto en JSX, literales de cadena dentro de expresiones JSX, cadenas leídas de constantes y atributos como title, alt, placeholder y aria-label. El código, las URL, los nombres de clases y las cadenas que no estén dentro de JSX no se modifican. Añade translate="no" o data-weglot-skip para mantener un elemento en el idioma original. Declara tus propios atributos de texto con translatableAttributes.
Haz que tu app de React sea multilingüe sin tener que reescribirla
Instala el paquete, añade tu clave API y compila.
$ npm install @weglot/translate-react
¿Prefieres hacerlo tú mismo? Lee la documentación o echa un vistazo al paquete en npm