Como desarrolladores, a menudo creamos cadenas en nuestro idioma nativo (como español) y luego las traducimos. Sin embargo, WPML asume que las cadenas por defecto están en inglés, lo que complica la exportación de traducciones hacia ese idioma.
El problema
WPML permite cambiar el idioma predeterminado de las cadenas, pero aún no permite exportar/importar traducciones en inglés cuando este no es el idioma base. Esto afecta especialmente si tu idioma inicial no es inglés.
Solución temporal
ANTES DE HACER NADA: NO LO HAGAS DIRECTAMENTE EN EL SERVIDOR O HAZ UNA COPIA DE SEGURIDAD DEL FICHERO. O TEN A MANO EL PLUGIN DESCARGADO PARA INSTALARLO DE NUEVO EN CASO DE CAÍDA DEL SITIO.
Sigue estos pasos mientras WPML trabaja en una solución permanente:
- Asegúrate de tener la última versión de WPML instalada.
- Abre el archivo
wp-content/plugins/wpml-string-translation/menu/string-translation.php
. - Realiza los siguientes cambios:
En las líneas 640 y 748, reemplaza
<span class="token delimiter important"><?php</span> <span class="token keyword">foreach</span> <span class="token punctuation">(</span> <span class="token variable">$active_languages</span> <span class="token keyword">as</span> <span class="token variable">$al</span> <span class="token punctuation">)</span> <span class="token punctuation">:</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token variable">$al</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'code'</span><span class="token punctuation">]</span> <span class="token operator">==</span> <span class="token variable">$string_settings</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'strings_language'</span><span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">continue</span><span class="token punctuation">;</span><span class="token punctuation">}</span> <span class="token delimiter important">?></span>
Por:
<?php foreach($active_languages as $al): ?>
En la línea 655, elimina:
if ( $al['code'] == $string_settings['strings_language'] ) { continue;}
- Ve a WPML > String Translation, selecciona la opción «Also create translations according to the .po file» y elige inglés desde el menú desplegable.
Ahora podrás importar/exportar traducciones en inglés sin problemas. Consulta el detalle en la errata oficial de WPML.