Plugin multilang, fichier MO impossible à lire ?

  • WordPress :4.9.9
  • Statut : non résolu
6 sujets de 1 à 6 (sur un total de 6)
  • Auteur
    Messages
  • #2202883
    Shuta
    Participant
    Initié WordPress
    27 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL :
    • Thème utilisé : Personnel
    • Extensions en place :
    • Nom de l’hébergeur :
    • Adresse du site : https://remi.nihon-cult.fr/

    Problème(s) rencontré(s) :

    Bonjour !
    Je présente mon problème : Je créée un site mutlilangues. Là n’est pas un problème. Pour la partie thème tout marche complètement. Seulement j’ai recréé un plugin pour faire des connexions et inscriptions. Mais il s’avère que mon plugin ne veuille pas lire mes fichiers en .mo… Je fais pourtant ceci :

    function login_nc_init(){
    	load_plugin_textdomain( 'login-nc', false, dirname(plugin_basename(__FILE__)) . '/languages');
    } 
    add_action( 'init', 'login_nc_init' ); // login_nc_init

    Normalement, avec ceci, ça devrait marcher… Mais non… J’ai pourtant regardé, j’ai d’autres plugins qui sont traduit aussi. Quand je change ma langue, ils se traduisent. Mais le mien ne veut rien entendre….

    Pourtant mes phrases à traduire sont lancés comme ceci : __( ‘Bonjour, je suis censé être traduit T^T’, ‘login-nc’ );

    Ce qui marche pour tout le reste, mais pas mon plugin….

    Merci de votre aide…

    Bonne journée !

    • Ce sujet a été modifié le il y a 2 months et 3 weeks par  Shuta.
    #2203863
    sebastienserre
    Modérateur
    Maître WordPress
    756 contributions

    Bonjour,

    Cette fonction est bien dans le fichier principal de ton extension?

    sinon, je pense que tu déclare cette fonction trop tôt, a un moment ou le plugin n’est pas chargé… donc WP ignore la fonction et tes chaines ne sont pas traduite.

    Le codex dit bien de hooker au ‘plugins_loaded’: Codex

     

    Tiens nous au courant.

     

     

    #2203901
    Shuta
    Participant
    Initié WordPress
    27 contributions

    Bonsoir,

    J’ai bien mit ces lignes à la fin du fichier principal de mon extension.

    J’ai rechangé init par plugin_loaded

    function login_nc_init(){
    	load_plugin_textdomain( 'login-nc', false, dirname(plugin_basename(__FILE__)) . '/languages');
    } 
    add_action( 'plugins_loaded', 'login_nc_init' ); // login_nc_init

    Rien ne change =(

    Vous pensez que c’est le nom de la function qui fait défaut ? :<

    En fait, c’est vraiment qu’il ne « trouve » pas le chemin d’accès aux fichier mo… ou ma ligne « load_plugin_textdomain » qui ne veut pas fonctionner ?

    J’ai regardé dans d’autres plugin (userpro par exemple) et elle est lancé au début en init…

    function userpro_init() {
    
    		if(!isset($_SESSION))
    		{
    			session_start();
    		}
    
    		global $userpro;
                    if($userpro == NULL) {
                        $userpro = new userpro_api();
                    }
    		$result=get_option("userpro_invite_check");
    		if(empty($result))
    		{
    
    			$user_invite_template=userpro_get_option('userpro_invite_emails_template');
    			$userpro_options = get_option('userpro');
    			$userpro_options['userpro_invite_emails_template']=str_replace("inivitelink","invitelink",userpro_get_option('userpro_invite_emails_template'));
    			update_option('userpro',$userpro_options);
    			update_option("userpro_invite_check","1");
    		}
    		if(get_option('userpro_publish_page_link')=='')
    		{
    			global $wpdb;
    			$userpropost = $wpdb->base_prefix."posts";
    			$query ="SELECT ID FROM $userpropost WHERE (post_content LIKE '%template=publish%')";
    			$result=$wpdb->get_results($query);
    			if(isset($result[0]->ID))
    			update_option('userpro_publish_page_link',$result[0]->ID);
    		}
    		$userpro->do_uploads_dir();
    
    		load_plugin_textdomain('userpro', false, dirname(plugin_basename(__FILE__)) . '/languages');
    
    		/* include libs */
    		if (!class_exists('UserProMailChimp')){
    			require_once userpro_path . '/lib/mailchimp/MailChimp.php';
    		}
    
    	}
    add_action('init', 'userpro_init');

    • Cette réponse a été modifiée le il y a 2 months et 3 weeks par  Shuta.
    #2204524
    sebastienserre
    Modérateur
    Maître WordPress
    756 contributions

    comment sont nommé les fichiers po/mo ?

    ils doivent etre de la forme: fr_FR.mo, en_EN.mo …

    #2204551
    Shuta
    Participant
    Initié WordPress
    27 contributions

    Oui ils sont bien nommés ainsi !

    en_US.mo ou bien jp_JP.mo
    Mais je n’ai pas de fichier en français (car la langue de base est FR). C’est exactement comme mon theme qui contient exactement les mêmes fichier (mais les traductions ne sont pas les mêmes dans les fichiers vu qu’il est adapté pour le plugin.)

    #2204801
    Shuta
    Participant
    Initié WordPress
    27 contributions

    Mais le plus étrange dans tout ça, c’est que quand j’ai mit le code que j’utilise pour le theme dedans en changeant le nom de la function, ben il marchait mais avec celui du thème du coup, et ce ne sont pas toutes les bonnes traductions x.x

    if ( ! function_exists( 'shufolio_theme_setup' ) ) :
    function shufolio_theme_setup(){
    	load_theme_textdomain( 'shufolio', get_template_directory() . '/languages' );
    }
    add_action( 'after_setup_theme', 'shufolio_theme_setup' );
    endif;

    Donc vraiment le problème c’est de trouver le dossier ou fichier dans mon plugin…

6 sujets de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.