Estoy desarrollando un theme que posee varias traducciones. Todo el tema esta con las strings para localizar ( _e() y __() ). Utilicé el plugin sublanguage para crear los los urls /es /fr etc. Solo uso esta función del plugin ya que levanto los .po/.mo de la carpeta languages/theme y funciona todo perfecto. El tema está en las llamadas AJAX que me levantan los textos sin traducir. Ya intente varias cosas pero no logro dar con la configuración correcta. Alguna ayuda?
¿Podrías dar un ejemplo de una llamada ajax en la que estás trabajando?
¿Lo revisaste desde la consola? ¿Te arroja algún error?
Facundo gracias por escribir!. Te comento como solucione esto (a modo de historial por si alguno se topa con algo parecido. El objetivo es tener un theme multilenguaje que soporte llamadas ajax de contenido extenso y de distinto tipo (json y html con data dinamica)
Contexto
- Es un theme propio casi pluginless tipo webapp
- Sitio seteado como multisite con subdomain
- El theme posee las funciones __() y _e() en todos los textos
- Las llamadas ajax están bien seteadas (ver codex). Usando wp_register_script() wp_enqueue_script y wp_localize_script
- .po y .mo generados correctamente por idioma y en la carpeta wp-content/languages/theme/{nombretheme}-es_ES.po , etc.
Problema:
En un principio queriamos un solo site con el cambio de lenguaje determinado por una variable en el url (si el url tenia tipo ?lang=es) cargaba la traducción en español (usando los .po y .mo). Esto estaba todo bien hasta que probe las llamadas ajax. No funcionaba si no localizaba cada devolución de string (los __e()). Esto va bien si lo que recibis via wp_send_json son string cortos, si recibis trozos de html con muchos strings no es escalable.
La solución
- No usamos ningun plugin
- Creamos varios multisite con su idioma es.miweb.com / fr.miweb.com etc definiendo el idioma del WordPress (esto levanta cada .po y .mo)
- Las llamadas ajax funcionan todas
La solución es simple y tal vez pensaran porque no la use antes pero es debido a que estamos centralizando todo el contenido en el blog central (id 1). Por mas que los usuarios se registen y operen con la webapp en su idioma la data se guarda en el central.
Eso es todo, perdon por lo extenso tal vez le sirva a alguien!