web-dev-qa-db-fra.com

Différentes traductions pour le même plugin dans un multisite

Nous avons une solution multisite. À l'intérieur de cette solution, il y a deux magasins WooCommerce. Les deux sont en néerlandais.

La façon dont ils abordent les gens est différente, ils veulent donc utiliser des traductions différentes. Hoe peut-il être atteint?

Nous avons déjà essayé la traduction manuelle et avec Loco Translations le plugin. Mais si vous modifiez quelque chose sur un site, il le sera également sur l'autre site.

1
Roy

Vous pouvez utiliser des points d'ancrage WordPress pour charger des fichiers spécifiques à un site, mais cela nécessite quelques travaux.

Dans cet exemple, nous allons conserver un fichier de langue néerlandaise commun à un emplacement système. Cela peut contenir toutes les chaînes qui fonctionnent pour les deux sites. Ensuite, nous remplacerons les chaînes communes dans deux fichiers en utilisant le ID du site . Nous avons donc trois fichiers au total:

  1. wp-content/languages ​​/ plugins/woocommerce-nl_NL.mo
  2. wp-content/languages ​​/ mon-site-1/woocommerce-nl_NL.mo
  3. wp-content/languages ​​/ mon-site-2/woocommerce-nl_NL.mo

Dans les deux derniers fichiers, il vous suffit de traduire les chaînes que vous souhaitez différencier du premier.

Pour charger le bon fichier en fonction du site, placez le code suivant quelque part afin qu’il soit exécuté tôt. Un plugin must-use est généralement le plus simple:

<?php
/*
 Plugin Name: Multisite translation loader
 Description: Loads site-specific translations on top of default
*/

function on_multisite_load_textdomain( $domain, $mopath ){
    static $lock;
    if( ! $lock ){
        $mopath = sprintf('%s/my-site-%u/%s', 
          WP_LANG_DIR, 
          get_current_blog_id(), 
          basename($mopath)
        );
        $lock = true;
        load_textdomain( $domain, $mopath );
        $lock = false;
    }
}

if( is_multisite() ){
    add_action('load_textdomain','on_multisite_load_textdomain',1,2);
}

Si vous souhaitez utiliser Loco Translate pour gérer ces fichiers, vous devez configurer chaque site avec un Domain Path supplémentaire. Accédez à la zone d'administration de chaque site et ouvrez l'onglet Avancé pour la configuration de l'ensemble. Ajoutez des chemins relatifs tels que "../../languages/site1" et "../../languages/site2" dans le champ du chemin du domaine et enregistrez les configurations.

Notez que chaque site conserve des paramètres de plug-in distincts, car ils sont enregistrés en tant quesiteoptions dans la base de données WordPress.

1
Tim