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:
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:
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:
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
oafter_setup_theme
.
Recursos y referencias
- Plugin Internationalization gt Developer WordPress
- Theme Internationalization gt Developer WordPress
- Make WordPress Polyglots
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 🙂 |