web-dev-qa-db-fra.com

Plusieurs domaines de texte

J'ai un tas de plugins. De toute évidence, ils ont tous leur propre domaine de texte pour l'internationalisation (i18n).

J'ai aussi un tas de fichiers que j'inclus dans tous mes plugins - je les jette tous dans un répertoire appelé common. Cela ajoute un widget de tableau de bord que je souhaite doter de tous mes plugins, ainsi qu'un script de mise à jour (car ils ne résident pas dans le dépôt de plugins wordpress.org).

Je veux être capable de simplement déposer mon dossier commun dans chacun de mes plugins sans avoir à éditer les fichiers. Mais je suis préoccupé par les chaînes de texte contenues à l'intérieur.

Puis-je appeler load_plugin_textdomain deux fois, pour deux domaines différents, dans le même plugin? Quelle est la meilleure façon de gérer cette situation en pensant à i18n?

Ou devrais-je parcourir chaque instance de mes fichiers communs et modifier manuellement le domaine de texte pour qu'il corresponde au plugin?

1
Luke Carbis

Vous pouvez appeler load_plugin_textdomain() plusieurs fois dans chaque plugin, mais je ne le ferais pas.

Placez les fichiers communs dans un plug-in séparé, par exemple luke-carbis-library. Dans ce plugin, créez deux fonctions simples pour la configuration et le chargement de fichiers supplémentaires:

add_action( 'plugins_loaded', 'lcl_init' );

function lcl_init()
{
    $dir = plugin_dir_path( __FILE__ );
    $url = plugins_url( __FILE__ );

    // maybe load necessary files and translation

    do_action( 'lcl_init', $dir, $url );
}

function lcl_load( $file )
{
    require_once plugin_dir_path( __FILE__ ) . $file;
}

Dans vos plugins dépendants accrochent dans votre action personnalisée:

add_action( 'lcl_init', 'depending_plugin_init', 10, 2 );

Vous pouvez maintenant changer la structure interne du plugin de base à tout moment. les autres plugins utilisent simplement $dir et $url depuis votre hook.

1
fuxia