This is the technical support forum for WPML - the multilingual WordPress plugin.

Everyone can read, but only WPML clients can post here. WPML team is replying on the forum 6 days per week, 22 hours per day.

This thread is resolved. Here is a description of the problem and solution.

Le problème : Je veux utiliser un code PHP par langue.

La solution: - Utilisez notre filtre wpml_current_language.

Documentation: https://wpml.org/wpml-hook/wpml_current_language/

This topic contains 5 replies, has 2 voices.

Last updated by Andrés 1 year, 10 months ago.

Assigned support staff: Andrés.

Author Posts
November 6, 2017 at 6:44 pm #1422434

sebastienL-20

Bonjour,

I try to translate a woocommerce add_action hook integrated in my function.php of the child theme.
Unfortunately, I don't see it in String translation.

Here is the php code :

// Policy
add_action('woocommerce_after_single_variation','policy');
function policy() {
echo ls_content_block_by_id( 485 );
}

Do you have an idea of the first verifications I have to do ?

November 6, 2017 at 6:57 pm #1422458

Andrés
Supporter

Languages: English (English ) Spanish (Español ) French (Français )

Timezone: Europe/Paris (GMT+02:00)

Bonjour Sebastien,

Merci d'avoir ouvert un nouveau ticket. 🙂

Or, il semble que vous utilisez un filtre WooCommerce avec un shortcode de "Loomisoft’s Reusable Content & Text Blocks", c'est bien le cas ?

D'un autre côté, pouvez-vous me dire à quoi corresponde le contenu avec ID 485 ? Est-ce qu'il a été traduit aussi ?

Cordialement,
Andrés

November 6, 2017 at 7:03 pm #1422475

sebastienL-20

Hello Andrés,

1/ Effectivement, le plugin que vous mentionné est bien installé et fait l'interface visuelle du contenu du shortcode.
2/ Le contenu est bien traduit dans le plugin (compatible WPML semble t'il).

November 6, 2017 at 7:36 pm #1422501

Andrés
Supporter

Languages: English (English ) Spanish (Español ) French (Français )

Timezone: Europe/Paris (GMT+02:00)

Lorsque vous traduisez votre bloc de contenu, il est assigné un ID différent. Dans votre cas est 485 pour l'anglais et 1242 pour le français.

Vous devez alors faire l'appel à chaque bloc selon la langue avec l'aide de notre filtre wpml_current_language, par example :

<?php 
// Policy
add_action('woocommerce_after_single_variation','policy');
function policy() {
    //je crée une variable avec la langue active $my_current_lang
    $my_current_lang = apply_filters( 'wpml_current_language', NULL );

    if ( $my_current_lang ="en" ) {
        echo ls_content_block_by_id( 485 );
    } else {
        echo ls_content_block_by_id( 1242 );    
    }
}
?>

Est-ce que cela résout votre problème ?

Documentation :
https://wpml.org/wpml-hook/wpml_current_language/

November 6, 2017 at 9:17 pm #1422568

sebastienL-20

Andrés,

Merci, c'est en effet une documentation que je n'avais pas lu.
J'ai légèrement modifié le code avec deux "if" plutôt qu'un "else" en leur appliquant "en" et "fr" chacun.

Voici le code si cela peut aider à l'avenir quelqu'un :

// Policy

add_action('woocommerce_after_single_variation','policy');
function policy() {

//Create variable avec la langue active $my_current_lang EN
$my_current_lang = apply_filters( 'wpml_current_language', NULL );

if ( $my_current_lang ="en" ) {
echo ls_content_block_by_id( 485 );
}

//Create variable avec la langue active $my_current_lang FR
$my_current_lang = apply_filters( 'wpml_current_language', NULL );

if ( $my_current_lang ="fr" ) {
echo ls_content_block_by_id( 1241 );
}

}

// Policy END

Andrés, always the best 😉
Merci.

November 7, 2017 at 11:59 am #1423076

Andrés
Supporter

Languages: English (English ) Spanish (Español ) French (Français )

Timezone: Europe/Paris (GMT+02:00)

Super ! 🙂
Belle journée,
Andrés