[Résolu] comment metttre en oeuvre la traduction d’un plugin ? (Créer un compte)

  • Statut : non résolu
13 sujets de 1 à 13 (sur un total de 13)
  • Auteur
    Messages
  • #534712
    Flobogo
    Modérateur
    Maître WordPress
    19966 contributions

    Bonjour,

    Ma configuration WP actuelle :
    – Version de WordPress : 3.8.1
    – Version de PHP/MySQL : 5.4.24 / 5.5.36
    – Thème utilisé : Zeeminty – Enfant
    – Extensions en place : Akismet (2.5.9), File Renaming on upload (1.2), Forum_wordpress_fr (3.1), jonradio Private Site (2.10), Mes fonctions (1.0), Ninja Pages, Categories, and Tags (1.3.2), Post Thumbnail Editor (2.3.0), Theme My Login (6.3.9), WordPress Database Backup (2.2.4), WordPress Importer (0.6.1), WP-Optimize (1.6.1), WP Security Audit Log (0.6.3) … et Genealogy (1.2.1)
    – Adresse du site : en local pour le test du plugin
    – Nom de l’hébergeur : en local

    Problème(s) rencontré(s) : le plugin Genealogy n’a pas de traduction française. Je l’ai créée avec Poedit, mais soit elle n’est pas prise en compte, soit elle fait bugguer le plugin.

    En détails :
    Pour un site familial privé, j’ai besoin d’un plugin de Généalogie. Après en avoir testé deux ou trois autres, j’ai essayé Genealogy, bien qu’un peu ancien –> compatibilité assurée jusqu’à WP 3.5.2, non mis à jour depuis nov 2012

    Ce plugin n’avait ni traduction, ni même de fichier .pot mais il comportait les chaînes de traduction.
    Avec Poedit, j’ai donc créé le fichier .pot (au passage, que faire quand il ne récupère pas toutes les entrées ?).
    J’ai ensuite généré les fichiers .po et .mo que j’ai bien appelés genealogy-fr_FR.po et genealogy-fr_FR.mo

    Jusque là, tout allait bien, j’étais même fière de moi 😉

    J’ai essayé plusieurs endroits pour mettre mes fichiers : à la racine du plugin, dans un dossier « language » que j’ai créé, puis dans celui de mon thème. Rien à faire, ma trad’ n’était pas prise en compte. :(

    Je fouille sur le Net, et je finis pas trouver la page du Codex sur l’internationalisation des fichiers puis celle sur la fonction load_plugin_textdomain

    Donc, je comprends qu’il faut rajouter ces lignes :

    // AJOUT de la fonction traduction (Localization support)
    function myplugin_init() {
    load_plugin_textdomain( ‘genealogy’, false, dirname( plugin_basename( __FILE__ ) ) );
    }
    add_action(‘plugins_loaded’, ‘myplugin_init’);

    Je les ai mises directement dans le fichier genealogy.php
    Et là, miracle, ma traduction apparaît enfin !

    Oui, MAIS … le plugin ne fonctionne plus correctement : les pages individuelles qu’il permet de générer pour la généalogie ne sont plus reconnues et aboutissent en erreur 404 :fire:

    Que faut-il faire ? Y a-t-il un endroit spécifique dans le fichier .php où il faut mettre les lignes de code pour la fonction load_plugin_textdomain ?

    Merci de m’aider, parce que là, j’en peux plus 😡

    #940330
    PapiBoyington
    Membre
    Maître WordPress
    1503 contributions

    Bonjour,

    êtes-vous sûr que ce sont ces lignes de code qui provoquent le bug et non les diverses manipulations préalables ?

    autre formulation: est-ce que si vous supprimez ces lignes de code, tout fonctionne normalement ?

    #940331
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    Il est possible que, par erreur, dans le .po, des variables aient été traduites. As tu par exemple bien gardé tous les %s, %$ et autres signes cabalistiques ?

    Flobogo wrote:
    Avec Poedit, j’ai donc créé le fichier .pot (au passage, que faire quand il ne récupère pas toutes les entrées ?).

    Faire la mise à jour du fichier .po, via PoEdit il repasse dans les fichiers.

    #940332
    Flobogo
    Modérateur
    Maître WordPress
    19966 contributions

    Merci à vous deux de ces conseils.

    J’ai fini hier soir à 02 h du mat’, je n’avais plus le courage de rien vérifier … et ce matin, ma 1ère idée était de venir appeler au secours ici 😉

    En fait, PapiBoyington a vu juste : c’est un bug du plugin Genealogy qui ne fonctionne donc plus –> le lien ne se fait pas entre la liste des membres de la famille et la page individuelle de chaque membre qui aboutit en erreur 404.

    J’ai donc travaillé pour rien à traduire ce plugin :(
    Bon, pas tout à fait pour rien, j’ai appris à utiliser Poedit pour extraire les chaînes à traduire … et je note ta remarque, lumière de Lune : on peut « repasser » sur les fichiers pour rechercher d’autres chaînes à traduire.
    Et le code de fonction d’internationalisation inséré dans le fichier .php principal du plugin était bon : j’ai revérifié aujourd’hui, après avoir d’abord tenté de recharger une version saine du plugin, j’ai reproduit le bug des pages 404, mais au moins, j’ai pu constater que ma traduction était bien prise en compte si je le remettais en place.

    Donc, ma question de départ est ✅

    Hélas, je me retrouve sans plugin d’arbre généalogique. Je teste maintenant WP Family Tree, qui fonctionne bien … mais qui ne comporte aucune chaîne traduisible ! J’ai écrit à l’auteur … 😕
    Est-ce possible de remplacer en dur dans tous les fichiers les mots que je veux traduire, par exemple « father » par « père« , etc … ?
    Est-ce que ça ne risque pas de faire bugguer les fonctions du plugin (surtout avec les accents ?)

    #940333
    PapiBoyington
    Membre
    Maître WordPress
    1503 contributions

    peut-être faudrait-il ouvrir un autre topic pour cette nouvelle question, non ?

    #940334
    Flobogo
    Modérateur
    Maître WordPress
    19966 contributions

    On reste quand même dans une question relative à la traduction d’un plugin. 😉

    Bon, si besoin je poserai ma question dans un autre topic, mais si vous avez une piste … 😕

    #940335
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    En fait, plutôt que remplacer en dur, je teconseillerais de roucouler auprès du créateur du plugin « moi y’en a internationaliser ton plugin si toi vouloir, mais toi mettre mon boulot dans mises à jour »

    Sinon tu refait la même chose à chaque mise à jour

    Car le boulot d’internationlisation n’est pas beaucoup plus difficile que celui de « rechercher – remplacer », le remplacement est juste un peu plus complexe.

    Mais quand tu sais que tu utilises __( ‘the string in english’, ‘textdomain’ ) pour générer une traduction et _e( ‘the string in english’, ‘textdomain’ ) pour l’afficher, tu as tout compris – en fait _e( est l’équivalent de echo __(

    #940336
    Flobogo
    Modérateur
    Maître WordPress
    19966 contributions

    Plutôt que « remplacer en dur » … « roucouler … en douce » ? 😆
    L’idée est bonne, mais le gaillard coriace : il vient de répondre à mon mail qu’il voulait bien travailler sur l’internationalisation … si j’achète la version pro du plugin :(
    C’est pas juste, alors que les anglophones peuvent profiter gratuitement de la version « free » :rolleyes:
    Je roucoule de plus belle : j’ai répondu que je lui offrais la trad’ en français si lui offrait le fichier .pot, et que c’est ça l’esprit de wordpress , mais … pas sûr qu’il accroche :rolleyes:

    Bon, sérieusement, je comprends le principe des instructions __(‘quelque chose’, « textdomain’) ou _e pour l’afficher, mais mes compétences en PHP sont insuffisantes pour bien comprendre quand il faut utiliser l’un ou l’autre et ce qu’il faudra y mettre.

    Donc, coder en dur, c’est pas bien, mais est-ce possible ?

    #940337
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    Et le deal inverse ? tu lui fais l’internationalisation contre la version pro ?

    #940338
    PapiBoyington
    Membre
    Maître WordPress
    1503 contributions

    ça me semblerait un bon deal 😎

    #940339
    Flobogo
    Modérateur
    Maître WordPress
    19966 contributions

    Oui, ce serait un bon deal si j’étais capable de faire l’internationalisation.
    Mais j’ai regardé hier soir : autant il y a certaines chaînes facile à repérer et je saurais mettre le _e mais c’est surtout le cas côté admin’. Par contre, dès que les chaînes à traduire sont incluses dans des fonctions ou des « commandes » en PHP (ce qui est le cas pour le côté visiteur, puisque c’est le fonctionnement même du plugin), ça me dépasse et j’aurais peur de tout casser.
    Si je dois tester ma tentative d’internationalisation à chaque virgule, j’en ai pour des mois !! :(

    Et le concepteur du plugin accepte mon petit deal : internationalisation contre traduction en français … mais pas avant le printemps. Je n’ai plus qu’à m’armer de patience, si c’est fait pour avril, ça me va.

    Au pire, je vais essayer de traduire « en dur » les quelques mots qui posent problème côté visiteur … si j’arrive à les repérer précisément dans les différentes fonctions.

    Pour finir, un petit :hs:
    Lumière de Lune, pourrais-tu retourner sur ce topic là ? Pour l’instant, j’utilise un plugin, mais je pense qu’avec un petit coup de pouce je pourrais me débrouiller sans.

    #940340
    Lumiere de Lune
    Participant
    Maître WordPress
    20531 contributions

    Fait ^^

    #940341
    Flobogo
    Modérateur
    Maître WordPress
    19966 contributions

    Bonsoir,

    Juste pour dire qu’à titre provisoire, j’ai traduit en dur (dans le fichier class.node.php du plugin WP-Family-Tree que j’utilise finalement) les expressions clés qui apparaissent côté visiteur –> traduire « father » et « mother » et autres petites choses comme ça, c’était quand même à ma portée :happy:

    Après tout, je m’en f— que l’admin’ du plugin soit en anglais puisque j’ai réussi à m’en servir.
    Comme ça, si le créateur du plugin internationalise, tant mieux, sinon tant pis.

    Et merci pour le coup de main sur l’autre topic, qui est résolu 😎

    Pour celui-ci également, on peut marquer ✅

13 sujets de 1 à 13 (sur un total de 13)
  • Vous devez être connecté pour répondre à ce sujet.