Saltar al contenido Saltar a la barra lateral

Este es el foro de soporte técnico de WPML, el plugin multilingüe de WordPress.

Todas las personas pueden leerlo pero solo los clientes de WPML pueden ingresar comentarios. El equipo de WPML responde en los foros 6 días a la semana, 22 horas por día.

Etiquetado: 

Este tema contiene 4 respuestas, tiene 0 voices.

Última actualización por monicaG-12 hace 2 días, 1 hora.

Asistido por: Otto.

Autor Publicaciones
noviembre 13, 2025 a las 11:55 am #17574652

monicaG-12

Antecedentes del problema:
Estoy intentando traducir varias partes de mi sitio web usando WPML. Quiero traducir una frase en el checkout añadida por Brevo, los titulares y contenido de los filtros del plugin Filtros de Productos de WooCommerce de Barn2, y un producto de tipo 'composite' del plugin WPC.

Síntomas:
No encuentro la frase en las traducciones de cadenas ni en las actualizaciones de cadenas del plugin. Los titulares y contenido de los filtros no se traducen. Al traducir un producto 'composite', solo aparece un desplegable o no aparece nada, y si lo intento agregar en inglés, se pone solo en español.

Preguntas:
¿Cómo puedo traducir la frase en el checkout añadida por Brevo?
¿Cómo puedo traducir los titulares y contenido de los filtros del plugin de Barn2?
¿Cómo puedo solucionar el problema de traducción de productos 'composite' del plugin WPC?

noviembre 13, 2025 a las 3:20 pm #17575756

Otto
Partidario de WPML desde 09/2015

Idiomas: Inglés (English ) Español (Español )

Zona horaria: America/Argentina/Buenos_Aires (GMT-03:00)

Hola,

Veo que en el chat nuestro asistente de IA hizo varias sugerencias. ¿Has podido probarlas? ¿Cómo han resultado cada una de ellas?

Saludos cordiales,
Otto

noviembre 14, 2025 en 11:49 am #17578894
monicaG-12

Si, la mayoría de ellas antes de contactaros ya las probé.
Lo único que no hice fue actualizar vuestro plugin a la versión que me decía, porque mi panel pone que esa versión no esta disponible, me pone que ya estoy la ultima versión de WPML.

Contacto con vosotros para ver si añadiendo alguna pequeña función en functions seria posible traducir la frase: "¡Sí, quiero recibir novedades y restocks! (optional)" del form de checkout ya que imposible añadirla a traducción de cadenas por mis medios.

Y lo mismo para los textos de plugin de filtros de barn2, en este caso me salen los títulos en español y los atributos, que son los selects que se filtran salen mezclados tanto ingles como español no se porque.

Y por ultimo con el plugin WPC composite products, es un caso extraño, los productos principales (con los que creara la composición estan todos traducidos) y cuando creo una traducción de un producto composite, sale un producto si o uno no, no sale ninguno o sale 1 solo en el selector. y si edito ese selector de la composición y añado manualmente de nuevo los productos no cambia nada, sigue igual.

Y si he revisado las cadenas, para este ultimo las cadenas no aplica, he revisado variables, tampoco he encontrado variables asociadas a este punto.

Ya me dices gracias.

Los hilos nuevos creados por Otto y vinculados a este se encuentran a continuación:

https://wpml.org/es/forums/topic/filtros-de-barn2/

https://wpml.org/es/forums/topic/error-al-traducir-composite-products/

noviembre 14, 2025 a las 2:20 pm #17579523

Otto
Partidario de WPML desde 09/2015

Idiomas: Inglés (English ) Español (Español )

Zona horaria: America/Argentina/Buenos_Aires (GMT-03:00)

Hola,

Muchas gracias.

En nuestra experiencia, es mejor tratar un problema por ticket, por lo que en este trataremos el de la cadena "¡Sí, quiero recibir novedades y restocks! (optional)".

He creado estos tickets para los otros dos problemas:
https://wpml.org/es/forums/topic/filtros-de-barn2/
https://wpml.org/es/forums/topic/error-al-traducir-composite-products/

En todos te pediré acceso. Siento la repetición, pero dado que las sugerencias que ya te han dado no sirvieron, prefiero verlo yo mismo y darte una solución. Ver el sitio es el primer paso en los tres problemas.

¿Para investigar mejor el problema, ¿puedes proporcionarme acceso temporal a tu sitio?
**Importante:**
- **Haz un backup** de tu sitio antes de compartir los datos.
- Si no ves un formulario privado para ingresar las credenciales, **no las publiques** en el foro.

¿Si fuera necesario, podría replicar tu sitio localmente instalando un plugin (Duplicator o WP All in One Migration)? Una vez resuelto el problema, borraré la copia.

Saludos cordiales,
Otto

noviembre 18, 2025 a las 7:15 pm #17589454

Otto
Partidario de WPML desde 09/2015

Idiomas: Inglés (English ) Español (Español )

Zona horaria: America/Argentina/Buenos_Aires (GMT-03:00)

Hola,

Muchas gracias.

Para traducir la cadena "¡Sí, quiero recibir novedades y restocks! (optional)" haz lo siguiente por favor:

❌ Por favor, antes que nada: haz un backup de tu sitio ❌

En el archivo functions.php del child theme agrega el siguiente código.

Lo que hace es registrar la cadena y luego utilizar la traducción cuando haga falta.

Una vez que lo agregues, visita el sitio y luego en WPML > String Translation va a aparecer la cadena. Tradúcela y verifica si aparece traducida en el front end.

Quedo atento a tus resultados.

Saludos cordiales,
Otto

add_action( 'init', function () {
    if ( ! function_exists( 'icl_register_string' ) ) {
        return;
    }

    $settings = get_option( 'sendinblue_woocommerce_user_connection_settings' );
    if ( ! $settings ) {
        return;
    }

    $settings = json_decode( $settings, true );
    if ( empty( $settings['displayOptInLabel'] ) ) {
        return;
    }

    do_action(
        'wpml_register_single_string',
        'brevo-woocommerce',
        'optin_label',
        $settings['displayOptInLabel']
    );
} );

add_action( 'init', function () {
    // Aseguramos que WooCommerce Blocks y las funciones existen
    if ( ! function_exists( 'woocommerce_register_additional_checkout_field' ) ) {
        return;
    }

    // Leer la opción de Brevo
    $settings = get_option( 'sendinblue_woocommerce_user_connection_settings' );
    if ( ! $settings ) {
        return;
    }

    $settings = json_decode( $settings, true );
    if ( empty( $settings['displayOptInLabel'] ) ) {
        return;
    }

    $original_label = $settings['displayOptInLabel'];

    // Obtener la traducción desde WPML (dominio/nombre iguales al registro)
    $translated_label = apply_filters(
        'wpml_translate_single_string',
        $original_label,
        'brevo-woocommerce',
        'optin_label'
    );

    if ( empty( $translated_label ) ) {
        $translated_label = $original_label;
    }

    // Determinar la localización igual que el plugin
    // 1 o 3 -> "contact", 2 -> "order"
    $location = 'contact';
    if ( ! empty( $settings['displayOptInLocation'] ) ) {
        $loc = (int) $settings['displayOptInLocation'];
        if ( $loc === 2 ) {
            $location = 'order';
        } else {
            $location = 'contact';
        }
    }

    // ID que usa el plugin de Brevo para el campo de checkout por bloques.
    $field_id = 'SendinblueWoocommerce/newsletter_opt_in';

    // Si existe la función interna de WooCommerce, eliminamos primero
    // el campo original registrado por el plugin y lo volvemos a registrar
    // con la etiqueta traducida.
    if ( function_exists( '__internal_woocommerce_blocks_deregister_checkout_field' ) ) {
        try {
            __internal_woocommerce_blocks_deregister_checkout_field( $field_id );
        } catch ( Exception $e ) {
            // Si falla la des-registración, no interrumpimos la carga.
        }
    }

    // Registrar de nuevo el campo de checkout de bloques
    // con el MISMO id pero etiqueta traducida.
    woocommerce_register_additional_checkout_field(
        array(
            'id'       => $field_id,
            'label'    => $translated_label,
            'location' => $location,
            'required' => false,
            'type'     => 'checkbox',
        )
    );
}, 20 );
noviembre 20, 2025 a las 8:42 am #17594528

monicaG-12

Si, muchas gracias, esta solución me ha funcionado