# General Translation Knowledge Base: ¿Cómo hago que un sitio web sea multilingüe?
URL: https://generaltranslation.com/es/kb/make-website-multilingual.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Elige dónde se alojarán las traducciones (en un proxy, un plugin de CMS, un creador de sitios web o tu propio código) y después asigna a cada idioma su propia URL, tal como recomienda Google. Traduce las páginas completas, además de los títulos y las metadescripciones, vincula las versiones con hreflang y ofrece un selector de idioma en lugar de redirigir automáticamente a los visitantes.
Category: Internacionalización
Last updated: 2026-10-20
Authors: Kevin Wu, Jackie Chen
Published: 2026-10-20

Un sitio web multilingüe ofrece cada página en varios idiomas, con cada versión en su propia URL, e indica a los motores de búsqueda cómo se relacionan entre sí. Los distintos enfoques se diferencian sobre todo en dónde se aloja el texto traducido, y eso determina cuánto control conservas sobre el SEO, la calidad y las actualizaciones. Por eso, conviene elegir el enfoque antes de traducir nada.

## ¿Qué enfoque deberías elegir?

La opción más ligera no requiere ningún trabajo por tu parte: los navegadores de los visitantes pueden traducir las páginas por sí mismos. [Chrome](https://support.google.com/chrome/answer/173424), por ejemplo, puede traducir una página con Google Translate en función de la configuración de idioma del lector. Eso le sirve a un lector concreto, pero no convierte tu sitio en multilingüe. No hay URL por idioma que indexar, no puedes revisar el resultado y tu único margen de control es marcar textos, como nombres de marca, con el atributo [`translate="no"`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/translate).

Los proxies de traducción y las superposiciones de JavaScript se colocan delante de un sitio ya terminado. [El proxy inverso de Weglot](https://weglot.com/technical-presentation/) obtiene tu página, traduce su contenido mediante la API de Weglot y sirve el resultado en un subdominio o subdirectorio por idioma, con hreflang añadido. Su integración de JavaScript, en cambio, inserta las traducciones en el navegador una vez cargada la página; Weglot advierte que los motores de búsqueda no detectan esas traducciones y recomienda este modo para pruebas o contenido privado. En ambos casos, las traducciones se almacenan en el panel de control del proveedor.

Los plugins de CMS y los creadores de sitios mantienen las traducciones dentro de la plataforma. En WordPress, [WPML](https://wpml.org/documentation/getting-started-guide/language-setup/language-url-options/) coloca los idiomas en directorios, en un dominio o subdominio por idioma, o en un parámetro `?lang=`, y [Polylang](https://wordpress.org/plugins/polylang/) determina el idioma a partir de un código en la URL o de un subdominio o dominio por idioma. [Webflow Localize](https://webflow.com/localization) sirve las configuraciones regionales en subdirectorios como `/es/`, traduce los metatítulos y las metadescripciones, y genera un mapa del sitio con etiquetas hreflang. La opción multilingüe de Squarespace [conecta Weglot](https://support.squarespace.com/hc/en-us/articles/205809778-Creating-a-multilingual-site-with-Weglot) en los sitios de la versión 7.1, y las traducciones se editan en Weglot, ya que Squarespace no permite editarlas directamente.

Los generadores de sitios estáticos y las bibliotecas de i18n mantienen las traducciones en tu repositorio. [Docusaurus](https://docusaurus.io/docs/i18n/introduction) almacena los archivos traducidos en `i18n/[locale]/` y configura automáticamente las cabeceras hreflang. [Hugo](https://gohugo.io/content-management/multilingual/) asigna el idioma de una página a partir de un sufijo en el nombre de archivo, como `about.fr.md`, o de su directorio de contenido, y luego la sirve bajo un prefijo como `/fr/`. En una aplicación creada con React, Next.js o Vue, una biblioteca como i18next o next-intl renderiza las traducciones a partir de archivos que tú mantienes. Ninguna de estas opciones genera las traducciones: tienes que escribirlas, comprarlas o conectar una herramienta de traducción.

| Enfoque                                                  | Dónde se almacenan las traducciones                     | Control de SEO                                                                                                                   | Control de calidad                                                                                   | Esfuerzo de ingeniería                                                                                                               | Ideal para                                                                                         |
| -------------------------------------------------------- | ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------- |
| Traducción del navegador                                 | Se generan en el navegador de cada visitante            | Ninguno; sin URL por idioma                                                                                                      | Ninguno, aparte de `translate="no"`                                                                  | Ninguno                                                                                                                              | Lectores de sitios que no has localizado                                                           |
| Proxy o superposición (Weglot)                           | Panel de control del proveedor                          | El modo proxy añade URL por idioma y hreflang; el modo JavaScript no se indexa                                                   | Traducción automática, seguida de ediciones o traducción humana encargada en el editor del proveedor | Cambio de DNS o etiqueta de script                                                                                                   | Sitios terminados que no quieres reconstruir                                                       |
| Plugin de CMS (WPML, Polylang)                           | Tu base de datos de WordPress                           | Formato de URL y selector configurados en el plugin                                                                              | Traducción manual, automática o por agencia dentro de WordPress                                      | Configuración del plugin y después trabajo página a página                                                                           | Sitios de WordPress                                                                                |
| Creador de sitios (Webflow Localize, Squarespace)        | El creador, o Weglot en el caso de Squarespace          | Gestionado por el creador                                                                                                        | Traducción automática más ediciones manuales                                                         | Bajo                                                                                                                                 | Sitios creados y alojados en ese creador                                                           |
| i18n de generador de sitios estáticos (Docusaurus, Hugo) | Archivos en tu repositorio                              | Total; controlas las URL y las plantillas                                                                                        | Depende del proceso que genere los archivos                                                          | Moderado; la traducción es un trabajo aparte                                                                                         | Sitios de documentación y contenido creados a partir de Markdown                                   |
| General Translation                                      | Archivos generados en tu compilación, o en la CDN de GT | Controlas el enrutamiento y los metadatos; `gt-next` proporciona funciones auxiliares de enrutamiento por configuración regional | Contexto derivado del código, terminología compartida y revisión integrada                           | Marcar el texto de origen o conectar catálogos existentes, generar antes de la compilación, probar las configuraciones regionales    | Sitios gestionados por desarrolladores que necesitan tanto generar traducciones como renderizarlas |
| Solo biblioteca de i18n (i18next, next-intl)             | Archivos de traducción en tu repositorio                | Total                                                                                                                            | Depende del proceso que genere los archivos                                                          | Extracción de cadenas, enrutamiento, entrega de traducciones y QA; las integraciones existentes pueden automatizar parte del trabajo | Aplicaciones que ya tienen un flujo de trabajo de traducción                                       |

Usa un proxy o la función integrada de tu creador de sitios cuando un equipo de marketing necesite páginas traducidas sin tener que reconstruir el sitio. Usa un plugin de CMS para WordPress. Usa la i18n de tu generador de sitios estáticos o una biblioteca de i18n cuando el sitio esté en manos de los desarrolladores y ya dispongan de traducciones. Elige General Translation si además quieres generar y revisar actualizaciones como parte de cada lanzamiento; su CLI puede traducir archivos existentes sin sustituir tu biblioteca. El esfuerzo depende de tu enrutamiento, tu contenido y tu proceso de revisión actuales; la tabla describe tareas, no tiempos medidos de configuración inicial.

## Los pasos que todo enfoque debe resolver

Sea cual sea el enfoque que elijas, tendrá que tomar estas siete decisiones, más o menos en este orden.

### 1. Elige idiomas y configuraciones regionales

Empieza por donde ya están tu tráfico y tus clientes. Cada configuración regional que añadas supone un conjunto de páginas que traducir, revisar y mantener actualizadas, así que añade una variante regional solo cuando la redacción o los formatos cambien para ese público: el portugués de Brasil y el de Portugal (`pt-BR`, `pt-PT`) tienen vocabulario distinto, mientras que un único `fr` puede servir a lectores francófonos de varios países. La [guía de códigos de configuración regional](/docs/platform/core/guides/locale-codes) explica cómo escribir y elegir estas etiquetas.

### 2. Elige una estructura de URL

Google [recomienda usar una URL distinta para cada versión de idioma](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites) en lugar de una única URL cuyo idioma cambie según una cookie o la configuración del navegador. Puedes usar subdirectorios (`example.com/fr/`), subdominios o dominios de país; [la guía de estructura de URL](/kb/multilingual-url-structure) compara estas opciones.

### 3. Traduce el contenido y los metadatos

Google [determina el idioma de una página a partir de su contenido visible](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites), no de los atributos `lang` ni de la URL, y desaconseja traducir solo la navegación y dejar el cuerpo de la página en un único idioma. Traduce la página completa, además de su título, la metadescripción, el texto alt de las imágenes, los errores de los formularios y los correos electrónicos que envía la página. Aun así, define `<html lang>` en cada versión: [los navegadores y los lectores de pantalla lo utilizan](https://www.w3.org/International/questions/qa-lang-why) para seleccionar fuentes, separar palabras con guiones y sintetizar la voz.

### 4. Añade hreflang

Las anotaciones hreflang indican a los motores de búsqueda qué URL son versiones de la misma página en distintos idiomas, para que puedan mostrar a cada usuario la versión en su idioma. En [Qué es hreflang](/kb/what-is-hreflang) se explican las reglas, `x-default` y los errores más comunes.

### 5. Añade un selector de idioma

Ofrece a los visitantes un control visible que los lleve a la misma página en otro idioma, y no [los redirijas automáticamente](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites) según el idioma que se les supone, algo que Google desaconseja. [La guía del selector de idioma](/kb/language-switcher) entra en detalle, y [cómo detectar el idioma de un usuario](/kb/detect-user-language) explica cómo elegir un idioma inicial adecuado.

### 6. Localiza el formato

Las fechas, los números, las monedas y los plurales siguen reglas distintas en cada configuración regional: `1,234.5` en inglés se escribe `1.234,5` en alemán. Las API `Intl` de JavaScript y la mayoría de las bibliotecas de i18n se encargan de darles formato por ti. Si añades árabe o hebreo, además tendrás que invertir el diseño en espejo; consulta [CSS right-to-left](/kb/right-to-left-css).

### 7. Mantén las traducciones actualizadas

Un sitio se queda desactualizado en otros idiomas en cuanto alguien edita el texto de origen y nadie vuelve a ejecutar la traducción. Decide quién o qué traduce los cambios, y cuándo: en cada publicación, en cada despliegue o según un calendario de revisiones. Antes del lanzamiento, repasa la [lista de verificación para el lanzamiento multilingüe](/kb/multilingual-app-launch-checklist) en cada configuración regional.

## Cómo General Translation hace que un sitio sea multilingüe

Para sitios y aplicaciones que desarrollas con código, ejecuta `npx gt@latest` en un proyecto de Next.js o React: el [asistente de configuración inicial](/docs/cli/quickstart) detecta el framework y genera la configuración. Después, envuelve el marcado existente en [`<T>`](/docs/react/reference/components/t) (`gt-vue` tiene el mismo componente), de modo que el texto se queda donde está escrito sin tener que mantener una clave de origen independiente para cada mensaje, y ejecuta [`npx gt translate`](/docs/cli/reference/commands/translate) antes de la compilación para generar todas las configuraciones regionales. Las guías de inicio rápido de [Next.js](/docs/react/nextjs-quickstart), [React](/docs/react/react-quickstart) y [Vue](/docs/vue/quickstart) explican paso a paso cada configuración.

[`createNextMiddleware`](/docs/react/nextjs/reference/functions/create-next-middleware) de `gt-next` sirve rutas con prefijo de configuración regional, como `/es/about`, pero de forma predeterminada deja sin prefijo el idioma predeterminado y redirige esas URL según la cookie de configuración regional del visitante o la cabecera `Accept-Language`. Por eso, establece `prefixDefaultLocale: true` para que cada URL de contenido esté siempre en un único idioma. (Consulta [enrutamiento por configuración regional y SEO](/kb/locale-routing-seo) para conocer las ventajas y desventajas).

El JSX marcado proporciona al servicio de traducción la estructura de elementos del texto y cualquier nota de contexto explícita. Revisa el texto generado en el [editor del panel de control](/docs/platform/dashboard/guides/reviewing-translations) antes de publicarlo. Las traducciones coincidentes se reutilizan en ejecuciones posteriores, así que editar el texto de origen no obliga a regenerar todo el sitio.

Además del código de la aplicación, la CLI traduce archivos [HTML](/docs/cli/reference/formats/html-files) y [Markdown y MDX](/docs/cli/reference/formats/mdx-md-files), [Locadex](/docs/platform/locadex/quickstart) traduce documentación de Mintlify, Fern y Docusaurus, y las integraciones conectan [Sanity](/docs/integrations/sanity/quickstart), [Payload CMS](/docs/integrations/payload/quickstart) y [Storyblok](/docs/integrations/storyblok/quickstart). Todas ellas comparten los mismos [grupos de contexto](/docs/platform/dashboard/guides/defining-context-for-translations) para la terminología y el estilo.

## Conclusiones clave

* Decide primero dónde se almacenarán las traducciones. La traducción del navegador y las superposiciones de JavaScript no generan páginas de idioma indexables; con los proxies, los creadores de sitios y los plugins, las traducciones quedan en manos de un proveedor o plataforma; con los enfoques basados en código, se quedan en tu repositorio.
* Cualquier enfoque debe resolver las mismas siete cuestiones: configuraciones regionales, URL, contenido traducido y metadatos, hreflang, un selector de idioma, formato y actualizaciones.
* Google recomienda usar una URL distinta para cada idioma, determina el idioma a partir del contenido visible y pide que no se redirija automáticamente a los visitantes.
* En sitios creados con código, usa [`<T>`](/docs/react/reference/components/t) para la UI y [`npx gt translate`](/docs/cli/reference/commands/translate) para generar las traducciones; después, configura el enrutamiento y prueba cada configuración regional antes del lanzamiento.

## Related questions

- [Subdirectorio vs. subdominio vs. ccTLD para SEO multilingüe](https://generaltranslation.com/es/kb/multilingual-url-structure.mdx): Usa subdirectorios como example.com/de/ cuando un mismo producto comparte sitio y proceso de lanzamiento. Solo un ccTLD indica un país, los subdominios permiten un alojamiento independiente, Google desaconseja los parámetros ?lang= y trata los dominios personalizados como .io y .ai como genéricos.
- [¿Qué es hreflang y cómo se configura?](https://generaltranslation.com/es/kb/what-is-hreflang.mdx): Hreflang le indica a Google qué URL son versiones de la misma página en otros idiomas o regiones, para que pueda mostrar la adecuada en los resultados de búsqueda. Agrégalo con etiquetas link de HTML, cabeceras HTTP Link o un mapa del sitio, asegúrate de que todos los enlaces sean recíprocos y usa códigos válidos como en-GB, no en-UK.
- [Buenas prácticas para el selector de idioma: UX, SEO y accesibilidad](https://generaltranslation.com/es/kb/language-switcher.mdx): Escribe el nombre de cada idioma en ese mismo idioma, como Deutsch o 日本語, y no uses banderas, que representan países. Enlaza cada opción a la misma página en ese idioma mediante un enlace rastreable, guarda la elección en una cookie y nunca redirijas automáticamente una URL localizada.
- [Lista de comprobación de pruebas de localización para aplicaciones multilingües](https://generaltranslation.com/es/kb/multilingual-app-launch-checklist.mdx): Prueba nueve aspectos en cada configuración regional compatible en una compilación de producción: recorridos completos, incluidos los estados de error y los correos electrónicos; cambio de idioma; plurales; moneda y zonas horarias; expansión del texto; diseño right-to-left; accesibilidad; entrega de traducciones; y URL de idioma rastreables. Asigna a cada comprobación un criterio de aprobación explícito.
- [¿Cuál es el mejor software de localización para desarrolladores?](https://generaltranslation.com/es/kb/best-localization-software.mdx): El mejor software de localización para desarrolladores traduce el contenido allí donde está escrito en el código, con contexto de tu producto, y mantiene cada idioma al día. General Translation lo consigue con bibliotecas de código abierto, grupos de contexto y Locadex, un agente de IA que abre pull requests.

## Previous and next questions

- Previous question: [¿Cómo encuentro cadenas codificadas de forma fija que no están traducidas?](https://generaltranslation.com/es/kb/find-hardcoded-strings.mdx)
- Next question: [¿Cómo localizo una app de iOS con String Catalogs?](https://generaltranslation.com/es/kb/localize-ios-app.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/es/kb/sitemap.md) for every article.
