Saltar navegación
Actualizado
junio 12, 2024
Este artículo no está actualizado.
Consulta Cómo lograr la compatibilidad con WPML de tus temas y extensiones.

Esta guía te mostrará cómo crear temas multilingües para WordPress. Un tema multilingüe es algo más que envolver todos los textos en llamadas GetText y proporcionar un archivo .mo. Localizar los textos del tema es un paso importante, pero hay otras cosas que hay que hacer.
Un tema para un sitio multilingüe tiene que mostrar los idiomas disponibles, permitir seleccionar en qué idioma se quiere ver y mostrarse correctamente en cada idioma.

Estas son las cosas que tendremos que hacer:

  1. Proporcionar localización para diferentes idiomas.
  2. Permitir a los usuarios cambiar de una lengua a otra.
  3. Devolver el contenido correcto por idioma.
  4. Decirle a WPML lo que hay que traducir.

Preparar el tema para la traducción

Para que el tema se muestre en diferentes idiomas, los textos deben pasar la traducción antes de mostrarse.
WordPress utiliza GetText para ello y tu tema también debería hacerlo.
Hemos escrito una Entrada sobre la localización de temas de WordPress.
En él se explica cómo envolver los textos del tema en llamadas a GetText, crear traducciones (archivos .mo) y aplicarlas al tema.

Cambiar entre distintas lenguas

Un selector de idiomas muestra a los visitantes los idiomas disponibles y les permite elegir.
Los selectores de idiomas pueden tener diferentes formularios.
Algunos prefieren un menú desplegable compacto con nombres de idiomas.
Otros muestran banderas de países y otros muestran listas horizontales o verticales de idiomas.
WPML facilita la implementación de selectores de idiomas.
Incluye su propio selector de idiomas desplegable, que también puede incluirse como widget.
Este selector de idiomas puede mostrar banderas de países, nombres de idiomas y sus traducciones.
Se puede configurar desde el menú WPML->Idiomas.
También puedes crear tu propio selector de idioma personalizado e insertarlo en diferentes lugares del tema.
La página del manual del selector de idioma personalizado explica cómo puedes crearlo y proporciona ejemplos de usos comunes.
Si añades un selector de idioma personalizado a tu tema, puedes darle un toque de elegancia y hacer que sea obvio para los usuarios que el tema está pensado para sitios multilingües.

Obtener contenido en el idioma adecuado

Muchos temas incluyen enlaces codificados a páginas, categorías y etiquetas.
WPML se engancha a las funciones estándar de la API de WordPress y las filtra por idioma.
Por ejemplo, cuando llamas a


$args = array( 'category' => 1 );
$myposts = get_posts( $args );

Supongamos que la categoría «1» es una categoría en inglés y la traducción al español es la categoría «4».
Cuando veas una Página en español y ejecutes este código, WPML sustituirá el número de Categoría en el filtro por «4».
Para que esto ocurra, tu código debe utilizar sólo llamadas a la API de WordPress y no consultar manualmente la base de datos (lo que es una mala práctica de por sí).
Puedes controlar esta funcionalidad en WPML->Idiomas.
Busca la opción para ajustar automáticamente los ID.

Decirle a WPML lo que hay que traducir

WPML puede leer un archivo de configuración de idioma.
Este archivo le indica todo lo que necesita saber sobre tu tema.
Esto incluye los textos del administrador, los campos personalizados y los tipos personalizados que estés utilizando.
Una vez creado este archivo XML, WPML se autoconfigurará y permitirá a los usuarios gestionar un sitio multilingüe sin hacer clic en una sola pantalla de configuración.

3 respuestas para “Temas multilingües personalizados”

  1. Hola: en relación a la información de esta página me surge la siguiente duda: parece que la función descrita proporciona traducciones automáticas ¿es así? Soy todavía inexperto en wordpress, pero en mi caso necesito traducir las páginas originales manualmente (traducidas por un profesional) y luego subir la versión traducida al tema, en páginas que enlacen con un icono/bandera de la(s) lenguas finales.

    ¿Es eso posible?

    Saludos,

    Ernesto