gggghhhhsssss

Localisation de subscribe-to-comments (Jack)

ad333333333333333

Subscribe-to-comments

Il existe déjà de nombreuses ressources en ligne sur les problèmes de localisation des fichiers WordPress. Je vous invite à vous reporter à deux articles pour bien comprendre la problématique abordée ici :

  1. Explications générales et utilisation de poedit
  2. Utiliser les fichiers .pot, .po, .mo

La mécanique de WordPress pour la localisation

Si un plugin doit être localisé (c’est le cas de Subscribe-to-comments), il devra comporter un fichier .mo contenant les traductions des chaînes de caractères. On le trouve en général à 3 endroits :

  1. à la racine du répertoire plugins/
  2. dans le répertoire au nom du plugin subscribe-to-comments/ (usage préconisé pour WordPress)
  3. dans un répertoire nommé lang/, langs/ ou languages/ et situé dans le répertoire du plugin.

Dans chaque fichier de plugin destiné à être internationalisé de cette manière, il faut invoquer la fonction load_plugin_textdomain pour appeler le fichier .mo

Localisation de subscribe-to-comments

Dans subscribe-to-comments (ligne 806 chez moi) voici cette instruction :

load_plugin_textdomain('subscribe-to-comments');

La fonction load_plugin_textdomain est définie dans le fichier wp-includes/l10n.php

function load_plugin_textdomain($domain, $path = false) {
 // <em>on récupère la valeur de WPLANG définie dans wp-config</em>
 $locale = get_locale();
  if ( empty($locale) ) // <em>si elle est vide</em>
    $locale = 'en_US'; // <em>anglais par défaut</em>

    if ( false === $path ) // <em>si aucun chemin n'a été spécifié</em>
      // <em>on définit $path sur la racine du répertoire plugins</em>
      $path = PLUGINDIR; 

  // <em>emplacement du fichier de langue</em>
  $mofile = ABSPATH . "$path/$domain-$locale.mo"; 

  load_textdomain($domain, $mofile);
}

Si on laisse cette fonction en l’état, le fichier de langue subscribe-to-comments-fr_FR.mo devra être téléchargé à la racine du répertoire plugins, c’est-à-dire wordpress/wp-content/plugins/

Si on veut qu’il soit dans un autre répertoire, alors il faut utiliser le deuxième paramètre de la fonction load_plugin_textdomain : $path

exemple

load_plugin_textdomain(’subscribe-to-comments’,'wp-content/plugins/subscribe-to-comments/’);Là, WordPress va chercher le fichier de langue dans le répertoire de notre plugin.

Note : attention aux mises à jours futures de ce plugin… En effet, il faudra refaire la manipulation pour chaque mise à jour.

Normalisation de développement des plugins

Vous pouvez avec ce mécanisme, très simplement placer vos fichiers de traduction où vous le souhaitez mais il me semble qu’on gagnerait en efficacité en normalisant l’arborescence des plugins, par exemple en créant systématiquement pour chaque plugin un répertoire du nom de ce plugin avec un répertoire lang/ à l’intérieur duquel on met tous les fichiers de langue .mo. Il suffirait alors de modifier la fonction load_plugin_textdomain dans l10n.php

function load_plugin_textdomain($domain, $path = false) {

  $locale = get_locale();

  if ( empty($locale) ) $locale = 'en_US';
  if ( false === $path ) $path = PLUGINDIR;    

  // <em>les fichiers de langue sont dans le répertoire lang/ de chaque plugin.</em>
  $mofile = ABSPATH . "$path/$domain/lang/$domain-$locale.mo";
  load_textdomain($domain, $mofile);
}

Note : ces remarques s’appliquent aussi aux feuilles de style ou aux fonctions javascript dont les appels et les définitions devraient être mieux normalisés, j’ai remarqué que trop de plugins pour WordPress nous obligent à définir des styles dans la css de notre thème (subscribe-to-comments par exemple)… A moins d’utiliser un thème qui comme celui de ce blog « supporte » ce plugin !

Les domaines de traduction de WordPress

Si parfois, en traduisant certaines chaînes de caractères, vous avez l’impression que celles-ci ne sont pas traduites, c’est sûrement que le domaine de traduction aura été mal défini.

Je m’explique ;-)

Dans le fichier subscribe-to-comments, on a

_e('Back to regular view');

(chez moi ligne 1068).

La fonction _e (définie aussi dans l10n.php) affiche une chaîne passée en paramètre. Cette fonction attend 2 paramètres :

  1. $text = « Back to regular view »
  2. $domain = ‘default’ (par défaut)
// <em>Echo a translated string.</em>
function _e($text, $domain = 'default') {    

  echo translate($text, $domain);

}

Si le « domaine » ($domain) n’est pas défini, alors le programme va chercher la traduction dans le fichier de langue général pour votre blog dans

wp-includes/languages/fr_FR.mo

Si ce paramètre est défini sur le domaine du plugin, alors il va chercher le fichier de traduction dans le répertoire de ce plugin.

Donc, s’il s’agit d’une traduction spécifique à ce plugin, il faut définir le domaine :

_e('Back to regular view', 'subscribe-to-comments');

Sinon, s’il s’agit d’une traduction récurrente, il y a de fortes chances à parier qu’elle est déjà définie dans le fichier général et donc vous n’avez pas besoin de définir son domaine :

_e('Back to regular view');

Voilà, vous savez tout maintenant de ce mécanisme ingénieux et vous serez à même de corriger tous les problèmes liés à la traduction de plugins ;-)

Ecrit par jack – Site

musicien et enseignant multimédia

Related posts:

  1. Plugin Pour Traduire les fichiers langues des plugins Wordpress ! Traduire les fichiers langues des plugins Wordpress ! Ce plugin...
  2. Modifier la langue avec poedit .mo .po Dans le monde du libre, la participation de toutes et...
  3. WordPress: Traduire un thème en une autre langue WordPress: Traduire un thème   Je garde l’objectif de...
  4. SLT,Comment je doit réaliser le fichier AIDE dans DELPHI 7? fairouz asked: Programmation delphi pour integrer le word le...
  5. programmation modulaire ? dovic asked: voilà , suis un débutant en c...

ad44444444444444444444
← Next post Previous post →

Subscribe / Share

Article by Créer Site Internet Pour Débutant

Authors bio is coming up shortly. Read 1008 articles by Créer Site Internet Pour Débutant
It's very calm over here, why not leave a comment?

Leave a Reply




 

mars 2010
L Ma Me J V S D
« déc    
1234567
891011121314
15161718192021
22232425262728
293031  

 

mars 2010
L Ma Me J V S D
« déc    
1234567
891011121314
15161718192021
22232425262728
293031  

 

mars 2010
L Ma Me J V S D
« déc    
1234567
891011121314
15161718192021
22232425262728
293031  
gggffsss