web-dev-qa-db-fra.com

la traduction ne fonctionne pas avec text_domain

J'essaie de traduire mon plugin personnalisé.

Je peux traduire mon plugin si je place le fr_CA.po/.mo dans mon wp-content\languages\plugins manuellement.

Mais j'aimerais pouvoir mettre mon fichier .po/.mo dans mon dossier de plugins dans "myplugin/languages"

Eh bien, dans le fichier principal, j'ai ceci:

 * Text Domain: myplugin
 * Domain Path: /languages/

mon texte

    add_action( 'init', 'myplugin_load_textdomain' );

function myplugin_load_textdomain() {
    load_plugin_textdomain( 'myplugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}

tout mon .po / .mo est dans ce dossier myplugin/languages/

Mon Wordpress est en fr_CA (WordPress 4.7.2 – fr_CA)

J'ai un fr_FR.po /fr_CA.po (et leur .mo).


Comme je l'ai dit précédemment, mon plugin change de langue si je mets mon .po/.mo dans le wp-content\languages\plugins et que je change le fr_FR(.mo/.po) en myplugin-fr_FR(.mo/.po)

mais je voudrais garder mon .po/.mo dans mon dossier plugins.

Quelqu'un sait quel est le problème?

2
Jean-philippe Emond

À partir du code source de load_plugin_textdomain , il devient évident que la fonction recherchera d'abord $domain . '-' . $locale . '.mo' (donc, c'est myplugin-fr_FR.mo) dans WP_LANG_DIR . '/plugins/' . $mofile.

Ce n’est que lorsque le fichier n’y est pas, que le chemin spécifié commence à s’examiner et s’il ne figure pas dans le répertoire principal du plugin. Ainsi, si vous n'obtenez pas le fichier mo dans le répertoire spécifié, il se peut qu'il ne s'y trouve pas ou que vous fournissiez le mauvais chemin.

Je ne vois pas si vous avez fait des fautes de frappe, mais au lieu de combiner dirname et plugin_basename, vous voudrez peut-être vous en tenir à plugin_dir_path pour fournir le bon répertoire.

1
cjbj