• Categoría de la entrada:PHP / Wordpress

Siguiendo con el post Crear web multi-idioma paso a paso con Polylang aquí te explico como modificar cadenas de texto con Polylang. Suele suceder que en algunas plantillas encuentres que no se tradujeron algunos elementos, botones, títulos, etc. con estas funciones que te comentaré podras hacerlo sin ningun problema.

Función de polylang: pll_register_string()

Lo primero que debes hacer es añadir en el archivo functions.php del tema de wordpress la función

pll_register_string( $name, $string, $group, $multiline);

Por cada cadena que desees traducir debes añadir esta línea, acá te indico que contiene cada parámetro de la función:

$name   => (obligatorio) el nombre que le damos a la cadena
$string   => (obligatorio) la cadena que queremos traducir (no ha de ser completa, puede ser una referencia pero siempre teniendo el cuidado de no repetirla)
$group   => (opcional) grupo en el que registramos la cadena, por defecto ‘polylang’
$multiline => (opcional) con el valor true, el campo para el texto será más grande, por defecto el valor es false

Por ejemplo:
/* Cadenas polylang */
pll_register_string("Contacta", "Contáctanos", "Footer");


Luego de guardar el archivo functions.php vamos a Ajustes > Idioma > Traducción de cadenas y nos encontraremos con la siguiente tabla en la cual podremos modificar las traducciones de nuestras cadenas.

Función de polylang: pll__()

Con esta función llamamos a las traducciones de las cadenas creadas, solo tendremos que pasar la cadena a la función pll__($string);
A esto lo haremos en el archivo donde quieras mostrar esa cadena de texto (p.e.:
page.php, single.php, home.php …) siguiendo nuestro ejemplo deberías pegar lo siguiente:


<?php echo pll__("Contactanos"); ?>

Si te sirvió esta guía comparte o déjanos tus comentarios.

Esta entrada tiene 2 comentarios

  1. Ana

    Hola, he visto tu artículo y me ha venido francamente bien pero no consigo saber como llamar a la función en la página en la que quiero que aparezca.

    Tengo el siguiente CODIGO:

    [CODE]
    // Returning Thank-You-Page
    $bookingFormOutput .= ‘

    ‘.__(‘Thank you for your booking request!’, ‘advanced-booking-calendar-pro’).’
    ‘.__(‘We have sent you an email including a summary of your booking!’, ‘advanced-booking-calendar-pro’).’
    ‘;
    $bookingFormOutput .= abc_booking_setPageview(‘bookingform/booking-successful’); // Google Analytics Tracking
    }else{
    // Returning Error-Page
    $bookingFormOutput .= ‘

    ‘.__(‘Something went wrong’, ‘advanced-booking-calendar-pro’).’
    ‘.__(‘There was a technical error. Please submit your booking request again.’, ‘advanced-booking-calendar-pro’).’
    ‘;
    $bookingFormOutput .= abc_booking_setPagev[/CODE]

    ¿Como demonios hago para poner el código [CODE]echo pll__(‘Gracias por solicitar la reserva con nosotros’);[/CODE] en mitad de ‘.__(‘Thank you for your booking request!’, ‘advanced-booking-calendar-pro’).’???? MIL GRACIAS

    1. Programador -

      Hola Ana, lo que que quieres remplazar es una cadena, supongo que guardando el contenido que devuelve la función pll_() en una variable y luego usando esa variable en donde quieres traducir el texto debería funcionar. Prueba esto:

      $texto = pll__(‘Gracias por solicitar la reserva con nosotros’);

      // Returning Thank-You-Page
      $bookingFormOutput .= ‘

      ‘.__($texto, ‘advanced-booking-calendar-pro’).’

      Espero que te sirva. Saludos.

Deja una respuesta