web-dev-qa-db-fra.com

La localisation fonctionne mais vous obtenez tout de même "Ce plugin n'est pas correctement préparé pour la localisation" msg dans le répertoire

Plusieurs utilisateurs de mon plug-in RSVPMaker ont soumis des fichiers de traduction/localisation que j'ai redistribués, mais pour une raison quelconque, la page du référentiel WordPress.org censé aider à la traduction affiche un message disant:

Ce plugin n'est pas correctement préparé pour la localisation.

J'ai parcouru plusieurs fois les consignes de codage de la localisation et résolu les problèmes qui, à mon avis, pouvaient entraîner des problèmes, tels que les retours de ligne dans les chaînes codées avec le __( et _e( fonctions. Ne semble pas avoir fait une différence.

Encore une fois, mon code fonctionne réellement pour charger des chaînes de traduction, mais il semble manquer quelque chose que le référentiel de traduction recherche. Malheureusement, aucune information de débogage.

Voici les lignes de code pertinentes de l'en-tête et les premières lignes de mon plugin qui chargent les fichiers de localisation au cas où vous rencontriez un problème ici:

/*
Plugin Name: RSVPMaker
Description: Schedule events, send invitations to your mailing list and track RSVPs....
Author: David F. Carr
Version: 4.3.3
Text Domain: rsvpmaker
Domain Path: /translations
*/

$locale = get_locale();

$mofile = WP_PLUGIN_DIR . '/rsvpmaker/translations/rsvpmaker-' . $locale . '.mo';

load_textdomain('rsvpmaker',$mofile);
3
David F. Carr

Je l'ai compris presque immédiatement après avoir posé la question, après des mois de frustration. Le problème était que j'utilisais la fonction load_textdomain (c'est ainsi que je l'ai appris) au lieu du load_plugin_textdomain apparemment plus récent/préféré.

Le code de travail ressemble à ceci

function rsvpmaker_load_plugin_textdomain() {
  load_plugin_textdomain( 'rsvpmaker', FALSE, basename( dirname( __FILE__ ) ) . '/translations/' );
}
add_action( 'plugins_loaded', 'rsvpmaker_load_plugin_textdomain' );
1
David F. Carr