Internacionalizar plugins y temas con __()

Contents

Introducción

La internacionalización (i18n) es el proceso de diseñar un plugin o tema de WordPress para que pueda adaptarse fácilmente a diferentes idiomas y regiones. En el ecosistema WP, la función __() es uno de los pilares fundamentales de este proceso, pues permite marcar cadenas de texto para su traducción sin romper la lógica del código.

Fundamentos de internacionalización en WordPress

Función __() y dominios de texto

La función __() devuelve la cadena traducida según el dominio de texto especificado. Su sintaxis básica es:

__( Cadena a traducir, mi-textdomain ) >

El textdomain (dominio de texto) agrupa todas las cadenas traducibles de un plugin o tema, y se corresponde con el nombre bajo el que se registran los archivos .pot, .po y .mo.

Otras funciones de localización

Función Descripción
_e() Misma funcionalidad que __(), pero imprime directamente la cadena traducida.
_n() Gestiona traducciones plurales según el número indicado.
esc_html__() Combina __() con esc_html() para escapar HTML.

Preparación del plugin o tema

Marcado de cadenas traducibles

Reemplaza cadenas literales por llamadas a las funciones de i18n:

echo sprintf( __( Hola %s, bienvenido., mi-textdomain ), esc_html( usuario ) ) >

Carga de archivos de traducción

Para que WordPress reconozca las traducciones, es necesario cargar el dominio de texto:

  • Plugins: load_plugin_textdomain( mi-textdomain, false, dirname( plugin_basename( __FILE__ ) ) . /languages/ )
  • Temas: load_theme_textdomain( mi-textdomain, get_template_directory() . /languages/ )

Generación de archivos POT

El archivo Portable Object Template (.pot) contiene todas las cadenas originales. A partir de él, se generan los archivos de traducción (.po / .mo).

Uso de WP-CLI

Con WP-CLI es muy sencillo extraer cadenas:

wp i18n make-pot ./mi-plugin/ ./mi-plugin/languages/mi-plugin.pot –slug=mi-plugin >

Uso de Poedit

  • Abrir Poedit y seleccionar Crear catálogo desde POT/PO existente.
  • Asignar Domain igual al textdomain usado.
  • Guardar y traducir cadenas.

Uso de archivos de traducción (MO)

Los archivos .mo (Machine Object) son binarios y se cargan automáticamente gracias a las funciones vistas. Deben ubicarse en la carpeta /languages/ correspondiente.

Mejores prácticas

  • Consistencia en el textdomain: el nombre debe coincidir con el directorio del plugin o tema.
  • Evitar concatenaciones: use sprintf() o placeholders en la cadena traducible (%s, %d).
  • Documentación clara: incluya en readme.txt instrucciones sobre cómo traducir y contribuir.
  • Registrar el textdomain temprano: utilice el hook plugins_loaded o after_setup_theme.

Recursos y referencias

Artículo creado como guía completa para desarrolladores interesados en la internacionalización de plugins y temas con la función __() en WordPress.


Acepto donaciones de BAT's mediante el navegador Brave 🙂



Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *