web-dev-qa-db-fra.com

POEdit avec code mu-plugins personnalisé

J'ai une structure de répertoire très stricte à laquelle je dois adhérer au sein de mu-plugins, mais j'aimerais que POEdit puisse m'aider à générer des fichiers de traduction pour un code spécifique dans cette structure, tout en ignorant de nombreux autres.

En ce moment, POEdit a du mal à localiser un code valide. J'ai acheté la version Pro, mais je pense que ma structure est trop personnalisée pour pouvoir bénéficier des fonctionnalités automatisées de Pro. J'ai également essayé d'utiliser le fichier WordPress .pot vierge situé à l'emplacement https://github.com/fxbenard/Blank-WordPress-Pot , mais j'obtiens toujours des résultats similaires.

Voici ma structure:

- mu-plugins
   - vendor [don't translate]
   - languages [.mo, .po and .pot files should go here]
   - client [translate some of these]
      - Custom_Class
         - Custom_Class.php [the file that is automatically loaded by _loader.php]
      - Custom_Class_2
         - Custom_Class_2.php [file that is automatically loaded by _loader.php]
         - includes
             - Included_File_1.php [files included by Custom_Class_2.php]
      - react_app [all these files should be EXCLUDED, especially node_modules/*]
   - _loader.php [contains the WordPress plugin headers, and includes all the other php files within the other folders]

_loader.php a les caractéristiques suivantes:

define( 'MY_TEXTDOMAIN', 'MY_TEXTDOMAIN' );
function load_mu_plugin_textdomain(){
    load_plugin_textdomain( MY_TEXTDOMAIN, false, plugin_dit_path( __FILE__ ) );
}
add_action( 'plugins-loaded', 'load_mu_plugin_textdomain' );

note: le code ci-dessus contient des fautes de frappe qui sont traitées dans ma réponse ci-dessous. Laissant ceci ici pour un enregistrement du problème.

J'utilise la define() exclusivement pour l'achèvement du code IDE. Comme vous pouvez le constater, la chaîne est identique à la constante. Par conséquent, POEdit ne devrait pas avoir de difficulté à trouver des éléments tels que __( 'my string', MY_TEXTDOMAIN );.

Je réalise qu'il existe un certain nombre d'approches non standard du point de vue de POEdit, mais j'estime que je devrais pouvoir personnaliser manuellement mon fichier .pot pour gérer cela. Voici mon fichier .pot tel quel:

# WordPress Blank Pot
# Copyright (C) 2014 ...
# This file is distributed under the GNU General Public License v2 or later.
msgid ""
msgstr ""
"Project-Id-Version: MY_PROJECT\n"
"POT-Creation-Date: 2012-10-05 10:50+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: Your Name <[email protected]>\n"
"Language-Team: Your Team <[email protected]>\n"
"Report-Msgid-Bugs-To: Translator Name <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Textdomain-Support: yes"
"X-Generator: Poedit 1.6.4\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: __;_e;esc_html_e;esc_html_x:1,2c;esc_html__;esc_attr_e;esc_attr_x:1,2c;esc_attr__;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_x:1,2c;_n:1,2;_n_noop:1,2;__ngettext:1,2;__ngettext_noop:1,2;_c,_nc:4c,1,2;\n"
"X-Poedit-Basepath: ../client/\n"
"X-Poedit-SearchPath-0: .\n"
"X-Poedit-Language: English\n"
"X-Poedit-Country: UNITED STATES\n"
"X-Poedit-Bookmarks: \n"
2
Tom Auger

Je ne suis pas sûr à 100% qu'il s'agisse du problème seulement qui empêchait POEdit d'analyser correctement mon code (je ne suis pas sûr qu'il se soucie réellement de la WordPress), mais la correction de ces erreurs (stupides) et la ré-exécution de POEdit à partir du fichier .pot ci-dessous semblent avoir généré les chaînes de traduction correctes:

define( 'MY_TEXTDOMAIN', 'MY_TEXTDOMAIN' );
function load_mu_plugin_textdomain(){
    load_plugin_textdomain( MY_TEXTDOMAIN, false, plugin_dir_path( __FILE__ ) );
}
add_action( 'muplugins_loaded', 'load_mu_plugin_textdomain' );

Changé de mon post original:

muplugins_loaded au lieu de plugins-loaded (ce qui n’est pas une action de toute façon: plugins_loaded est le crochet d’action correct - notez le trait de soulignement au lieu du tiret).

plugin_dir_path() au lieu de la faute de frappe: plugin_dit_path()

Voici le fichier .pot mis à jour que j'ai chargé, puis généré une nouvelle traduction pour:

# WordPress Blank Pot
# Copyright (C) 2014 ...
# This file is distributed under the GNU General Public License v2 or later.
msgid ""
msgstr ""
"Project-Id-Version: MY_PROJECT\n"
"POT-Creation-Date: 2012-10-05 10:50+0100\n"
"PO-Revision-Date: \n"
"Last-Translator: Your Name <[email protected]>\n"
"Language-Team: Your Team <[email protected]>\n"
"Report-Msgid-Bugs-To: Translator Name <[email protected]>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Textdomain-Support: yes"
"X-Generator: Poedit 1.6.4\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: __;_e;esc_html_e;esc_html_x:1,2c;esc_html__;esc_attr_e;esc_attr_x:1,2c;esc_attr__;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_x:1,2c;_n:1,2;_n_noop:1,2;__ngettext:1,2;__ngettext_noop:1,2;_c,_nc:4c,1,2;\n"
"X-Poedit-Basepath: ../client/\n"
"X-Poedit-SearchPath-0: .\n"
"X-Poedit-Language: English\n"
"X-Poedit-Country: UNITED STATES\n"
"X-Poedit-Bookmarks: \n"
1
Tom Auger