Sauter la navigation

Ce sujet est résolu. Voici une description du problème et de la solution.

Problème :
Vous souhaitez traduire de grands blocs de texte dans votre fichier functions.php, mais vous rencontrez des limitations avec la fonction gettext qui ne supporte pas bien les longs textes.
Solution :
1. Utilisation directe des fonctions

gettext

: Vous pouvez utiliser les fonctions

__()

ou

_e()

pour envelopper vos grands blocs de texte. Assurez-vous que le texte est gérable pour les traducteurs.

<?php<br />function mon_bloc_de_texte_personnalisé() {<br />    $bloc_de_texte = __('<br />        Ceci est un grand bloc de texte qui doit être traduit.<br />        Il peut s'étendre sur plusieurs lignes et inclure beaucoup de contenu.<br />        Assurez-vous qu'il est correctement formaté pour la lisibilité.<br />    ', 'votre-domaine-de-texte');<br /><br />    return $bloc_de_texte;<br />}<br />?>

2. Utilisation des fichiers de modèles : Déplacez vos grands textes vers des fichiers de modèles séparés et incluez-les dans votre

functions.php

. Créez par exemple un fichier

content-text-block.php

et utilisez

get_template_part('content', 'text-block');

pour l'inclure.
3. Utilisation des fichiers de traduction : Gérez les traductions de grands textes via des fichiers PO/MO. Assurez-vous que votre thème ou plugin charge le domaine de texte correctement et utilisez

__()

pour récupérer le texte traduit.

Si cette solution ne résout pas votre problème ou semble obsolète, nous vous recommandons de vérifier les problèmes connus, de vérifier la version de la correction permanente et de confirmer que vous avez installé les dernières versions des thèmes et plugins. Si nécessaire, n'hésitez pas à ouvrir un nouveau ticket de support sur notre forum de support.

Il s'agit du forum d'assistance technique de WPML, le plug-in multilingue pour WordPress.

Il est accessible à tous, toutefois seuls les clients de WPML peuvent y publier leurs messages. L'équipe du WPML répond sur le forum 6 jours par semaine, 22 heures par jour.

Aucun de nos assistants n'est disponible aujourd'hui sur le forum French. Veuillez créer un ticket, et nous nous le traiterons dès notre prochaine connexion. Merci de votre compréhension.

Marqué : 

Ce sujet contient 1 réponse, a 2 voix.

Dernière mise à jour par Ilyes Il y a 2 mois et 2 semaines.

Assisté par: Ilyes.

Auteur Articles
juillet 8, 2024 à 3:26 pm #15914389

kisa

Contexte de la question:
J'ai utilisé la fonction getText dans functions.php pour traduire des mots ou des phrases courtes. Maintenant, j'aimerais également traduire de gros blocs de textes qui sont actuellement en dur dans mon fichier functions.php.

Symptômes:
Je ne peux pas passer autant de texte avec getText.

Questions:
Comment me conseillez-vous de procéder pour traduire de gros blocs de textes dans functions.php ?

juillet 8, 2024 à 11:21 pm #15915887

Ilyes
Supporter

Les langues: Anglais (English ) Français (Français )

Fuseau horaire: Pacific/Easter (GMT-05:00)

Bonjour,

Merci d'avoir contacté l'équipe d'assistance WPML,

Il y a un forum sous stockoverflow qui traite de ce cas : https://stackoverflow.com/questions/18229047/gettext-with-larger-texts

gettext a effectivement une limite de 4096 caractères sur la longueur des chaînes de caractères. et ne recommande pas les grandes chaînes de caractères,

C'est pourquoi j'ai vérifié quelles sont les autres approches pour cela :

1- Utilisation des fonctions `gettext` avec des blocs de texte

Bien que cela puisse sembler peu pratique, vous pouvez toujours utiliser les fonctions `__()` ou `_e()` pour des blocs de texte plus grands, mais il est crucial de s'assurer que le texte est gérable pour les traducteurs. Voici comment procéder :

<?php
// Dans votre functions.php
function mon_bloc_de_texte_personnalisé() {
    $bloc_de_texte = __('
        Ceci est un grand bloc de texte qui doit être traduit.
        Il peut s\'étendre sur plusieurs lignes et inclure beaucoup de contenu.
        Assurez-vous qu\'il est correctement formaté pour la lisibilité.
    ', 'votre-domaine-de-texte');

    return $bloc_de_texte;
}
?>

2- Utilisation des fichiers de modèles

Une approche plus organisée consisterait à déplacer vos grands blocs de texte vers des fichiers de modèles et à utiliser des fonctions de traduction là-bas. Cela aide à garder votre fichier `functions.php` plus propre.

A. Créer une partie de modèle :

Créez un nouveau fichier de modèle, par exemple `content-text-block.php`, dans le répertoire de votre thème et ajoutez-y votre grand bloc de texte.

    php
    <?php
    // content-text-block.php
    echo __(
        'Ceci est un grand bloc de texte qui doit être traduit.
        Il peut s\'étendre sur plusieurs lignes et inclure beaucoup de contenu.
        Assurez-vous qu\'il est correctement formaté pour la lisibilité.',
        'votre-domaine-de-texte'
    );
    ?>
 

B. Inclure la partie du modèle dans votre functions.php:

Dans votre `functions.php`, incluez la partie du modèle où nécessaire.

    <?php
    // Dans votre functions.php
    function mon_bloc_de_texte_personnalisé() {
        ob_start();
        get_template_part('content', 'text-block');
        return ob_get_clean();
    }
    ?>

3. Utilisation des fichiers de traduction

Pour gérer de grands textes et faciliter la tâche des traducteurs, vous pouvez stocker ces textes dans des fichiers de traduction :

A. Créer un fichier PO/MO :

Utilisez un outil comme Poedit pour créer des fichiers PO/MO pour vos traductions. Cela facilitera la gestion des traductions pour des blocs de texte plus grands.

B. Charger le domaine de texte :

Assurez-vous que votre thème ou plugin charge correctement le domaine de texte.

  <?php
    // Dans votre functions.php
    function mon_theme_setup(){
        load_theme_textdomain('votre-domaine-de-texte', get_template_directory() . '/languages');
    }
    add_action('after_setup_theme', 'mon_theme_setup');
    ?>

C. Utiliser les fonctions de traduction :

Utilisez `__()` pour récupérer le texte traduit de vos fichiers PO/MO.

<?php
    // Dans votre functions.php ou fichier de modèle
    function mon_bloc_de_texte_personnalisé() {
        return __(
            'Ceci est un grand bloc de texte qui doit être traduit.
            Il peut s\'étendre sur plusieurs lignes et inclure beaucoup de contenu.
            Assurez-vous qu\'il est correctement formaté pour la lisibilité.',
            'votre-domaine-de-texte'
        );
    }
    ?>

### Résumé

1. **Utilisation directe des fonctions `gettext`** : Enveloppez vos grands blocs de texte dans `__()` ou `_e()`.
2. **Parties de modèles** : Déplacez les grands textes vers des fichiers de modèles séparés et incluez-les dans votre `functions.php`.
3. **Fichiers de traduction** : Utilisez des fichiers PO/MO pour gérer les traductions des grands textes.

En suivant ces méthodes, vous pouvez gérer de grands blocs de texte dans votre thème ou plugin WordPress, en vous assurant qu'ils sont traduisibles et gérables.

Cordialement,

juillet 9, 2024 à 10:11 am #15919685

kisa

Merci beaucoup pour votre aide, je vais utiliser votre méthode de modèles qui semble effectivement plus propre !

kisa a confirmé que le problème avait été résolu sur 2024-07-09 10:11:25.
Ce ticket est maintenant fermé. Si vous êtes un client de WPML et que vous avez besoin d'aide, veuillez ouvrir un nouveau ticket d'assistance