Aprenda a registrar los textos introducidos por el usuario desde plugins y temas para su traducción. Una vez registrados, puede traducirlos con Traducción de cadenas.
Cómo registrar los textos introducidos por el usuario
Cuando un usuario crea nuevas cadenas, o actualiza cadenas existentes, estas deben registrarse en la tabla de cadenas de WPML.
Puede realizar esta llamada con el hook de acción wpml_register_single_string:
do_action( 'wpml_register_single_string', string $context, string $name, string $value )
- $context – El nombre del plugin o tema, en un formato legible por humanos.
- $name – El nombre de la cadena, que ayuda al traductor a entender qué se está traduciendo.
- $value – La cadena que necesita ser traducida.
Considere este ejemplo de widget personalizado, que incluye un título, un campo input de una sola línea y un textarea. Para registrar estos campos para su traducción cuando se guardan o actualizan las opciones del widget, utilizamos la función de actualización:
Uso del hook de acción wpml_register_single_string
function update($new_instance, $old_instance){
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['custom_input'] = strip_tags($new_instance['custom_input']);
$instance['custom_textarea'] = $new_instance['custom_textarea'];
//WPML
/**
* register strings for translation
*/
do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );
//WPML
return $instance;
}En este ejemplo, le decimos a WPML que necesita traducir los textos introducidos por el usuario para el campo input y el campo textarea. Estos textos se registrarán bajo el contexto de cadenas Widgets con el nombre Custom Widget – input field y Custom Widget – textarea field respectivamente.
Una vez que registre los textos, puede usar el hook de acción wpml_translate_single_string para mostrar las traducciones en el front-end.
Cómo integrar Traducción de cadenas con plugins y temas
Al integrar Traducción de cadenas con plugins o temas, es importante asegurarse de que las llamadas existan.
Implementar llamadas condicionales
Envuelva sus llamadas en sentencias if_function_exists() para que, si WPML está activado, se ejecuten, y si no, se mantenga el funcionamiento normal.
Manejar la activación tardía de WPML
Como desarrollador de temas o plugins, también debe considerar el caso en el que WPML se activa mucho después de que el usuario comience a usar su tema o plugin.
En estos casos, las cadenas no se traducirán porque la llamada a wpml_register_single_string no se realiza cuando se crean. Para solucionar esto, debe registrar todas las cadenas de usuario cada vez que se cargue la pantalla del panel de administración del plugin.
Aunque esto añade un tiempo de ejecución insignificante, garantiza que las cadenas siempre se envíen a traducción y estén actualizadas.
El código primero debe comprobar si existe la función wpml_register_single_string. Si es así, se debe llamar a la función para registrar todos los textos introducidos por el usuario. Así es como funciona:
- Si la función se llama con valores en blanco o NULL, WPML ignora estas llamadas.
- Si una cadena ya existe y no se ha modificado, WPML ignora la llamada.
- La función solo actúa si se registran cadenas nuevas o modificadas.
Toda la tabla de traducción se almacena en la caché de la memoria, por lo que llamarla repetidamente requiere muy poca potencia de procesamiento.
Recursos adicionales
Para registrar textos incrustados en el código desde temas y plugins para su traducción, consulte nuestro artículo sobre cómo encontrar cadenas que no aparecen en la página de Traducción de cadenas.
Para registrar las opciones de temas o plugins para su traducción, consulte nuestra guía sobre el uso del archivo de configuración de idioma.
Para traducir elementos de temas o plugins como un grupo, consulte nuestra sección de Traducción de paquetes de cadenas.