- Statut : non résolu
- Ce sujet contient 10 réponses, 3 participants et a été mis à jour pour la dernière fois par Oo, le il y a 18 années et 7 mois.
-
AuteurMessages
-
15 juin 2006 à 14 h 39 min #447902
Bonjour @ tous,
J’ai beau chercher et malgré la discussion suivante, je ne trouve pas chaussure à mon pied !
Voici mon projet/envie :
Les extensions sont très utiles et utilisées sous WP mais malheureusement beaucoup d’entre elles sont disponible en anglais ! Je désire donc les traduire et ainsi les mettre à disposition de la communauté francophone de WP !
Jusqu’a ce jour, je traduisais les fichier en dur (traduction direct dezs fichiers source) mais il s’avère qu’avec les mises à jour et améliorations régulières, ce travail devint fastidieux (Obliger de tout recommencer) !
Donc, j’aimerais me rabattre sur l’utilisation de PoEdit (avec les fichier POT, PO et MO) mais je suis un peu novice dans ce domaine !
Ma prémière réalisation est la traduction du futur thème de mon site (disponible prochainement) mais le fichier POT était déjà éxistant donc facile de le reprendre et de créer le fr_FR.po et fr_FR.mo !
Par contre pour les pour les extensions, j’ai reussi à prendre un fichier POT lambda et à le mettre à jour et ainsi traduire une extension (wp-useronline de Lester Chan) mais j’ai quelque questions !
– Comment créer de toutes pièces un fichier POT (sans prendre un autre fichier et de le mettre à jour) ?
– Comment nommer le fichier po et mo que nous allons créer avec l’aide du POT ?
– Comment faire pour que cette traduction soit prise en compte (où la placer sur le serveur, faut t-il modifier/ajouter du code dans le fichier source de l’extension…) ?Voila, je crois que c’est tout !
Merci de votre aide !
15 juin 2006 à 15 h 50 min #575483Malheureusement, pour créer un POT, il faut d’abord que le plugin soit internationalisé, cest-à-dire que l’auteur ait mis toutes ses chaines dans des fonctions __() ou _e().
Pour information, _e(« Mon texte ») est utilisé pour remplacer echo « Mon texte », tandis que __(« Mon texte ») est utilisé lorsque la chaîne « Mon texte » est renvoyée à une autre fonction, pas directement affichée comme c’est le cas avec echo.
http://codex.wordpress.org/Translating_WordPress#Localization_TechnologyA partir du moment où un plugin ne comporte pas ses fonctions d’internationalisations, aucun POT/PO/MO n’est réalisable. Tu peux alors soit demander à l’auteur du plugin d’internationaliser son plugin (par exemple en lui envoyant toi-même la dernière version internationalisée), ou traduire les chaînes directement, sans te prendre la tête avec __() et autres car il te faudra de la même manière tout modifier à la prochaine version.
Supposons que ton plugin ait des chaînes internationalisée. Magnifique ! Il ne te reste plus qu’à les localiser (donc, créer la traduction française). Si tu n’as pas de POT, tu peux le créer en suivant ce guide :
http://codex.wordpress.org/User:Skippy/Creating_POT_FilesA partir du moment où tu as ton POT, tu peux créer le PO (un PO n’est qu’un fichier POT avec les chaînes traduites en plus), et donc générer le MO.
Voilà.
15 juin 2006 à 16 h 19 min #575484Salut Xavier,
Merci des précisions, c’est plus clair dans ma tête !
Alors, pour info, l’extension en question est partiellement internationalisée. Si j’ai bien compris, il suffit que j’ajoute les chaines maquantes sous les fonctions __() et_e() et donc la traduction sera faisable sous PoEdit ?
Sinon, j’ai vu qu’il fallait ajouter la fonction « load_plugin_textdomain() » à l’extension, il suffit de mettre le nom du fichier po entre parenthèse ?
Merci de ton aide !
Ca va permettre à la traduction et à la mise à disposition de plusieurs extensions !
15 juin 2006 à 16 h 25 min #575485Oo Bubu wrote:Sinon, j’ai vu qu’il fallait ajouter la fonction « load_plugin_textdomain() » à l’extension, il suffit de mettre le nom du fichier po entre parenthèse ?C’est ce que je comprends également.
Cela dit :
« load_plugin_textdomain(‘myplugin’);Now, when you markup strings in your plugin, you must specify the domain in the calls to __() and _e().
__(‘String to translate.’, ‘myplugin’); »
http://boren.nu/archives/2004/11/01/localizing-plugins-and-themes/Donc fait déjà un POT/PO/MO avec le plugin tel quel, et si ça ne marche pas, ajoute load_plugin_textdomain(‘leNomDuBidule’); au début.
15 juin 2006 à 16 h 29 min #575486Salut Xavier,
Ok, je vais tester cela ! Même si j’avais testé en copiant sur une extension déjà existant et disponible avec fichier POT ! Je me retrouvais avec une erreur !
Je vais refaire correctement et je reviens
@ tt 😉
15 juin 2006 à 18 h 09 min #575487Yo Xavier,
Je viens de créer le POT/PO/MO, tout ce passe convenablement ! J’ai fait une traduction mot à mot (Pour faire vite) !
Ensuite passage à l’étape du test en ligne !
1er test :
-Ajout des fichiers POT/PO/MO dans le repertoire « plugin » de WP => Rien ne se passe !
2ème test :
– Ajout des fichiers POT/PO/MO dans le repertoire « plugin » de WP + Ajout de la fonction « load_plugin_textdomain(‘wpuo’); » dans les deux fichiers php de l’extension (wp-useronline.php situé à la racine de WP et useronline.php situé dans le repertoire « plugin » de WP) => J’obtiens l’erreur suivante quand je vais sur la page : http://www.leblog2bubu.info/wp-useronline.php
Fatal error: Call to undefined function: load_plugin_textdomain() in /homepages/2/d147387020/htdocs/wp-useronline.php on line 20
3ème test :
– Pareil que le précédent mais le nom de fichier différent : wpuo.po et wpuo.mo
4ème test :
– J’ai testé avec le fonction »load_plugin_textdomain(‘wpuo/wpuo.po/wpuo.mo’); » sur une des deux pages et vis versa !
Mais toujours rien !
Ce qui est intéréssant, c’est de voir que l’extension, plus précisément le mots Users est traduit en français par Utilisateurs et ce sans les fichiers POT/MO/PO et avec l’extension en anglais ! Ce qui veut dire, qu’il va chercher la traduction ailleurs !
Dans le fichier fr_FR.mo ? Ce qui me semble étrange !
PS : pour le moment, j’enlève les fonctions dans les différents fichiers PHP de l’extension pour laisser apparaitre la traduction de Users !
Merci de ton aide !
😉
16 juin 2006 à 9 h 51 min #575488La fonction load_plugin_textdomain() se trouve dans le fichier wp-l10n.php, et ressemble à ça :
function load_plugin_textdomain($domain, $path = ‘wp-content/plugins’) {
$locale = get_locale();
$mofile = ABSPATH . « $path/$domain-$locale.mo »;
load_textdomain($domain, $mofile);
}Si le plugin ne le trouve pas, c’est peut-être qu’il n’appelle pas les fichiers de fonctions de WP à la base…
Par ailleurs, je pense qu’il faut place le .mo au même niveau que le plugin, donc l’appel devrait sans doute être
load_plugin_textdomain(‘wpuo’);
et le fichier de la forme wpuo-fr_FR.mo (d’après ce que je lis dans la fonction).16 juin 2006 à 10 h 11 min #575489Salut Xavier,
Merci de m’aider !
J’ai bien vérifier dans le fichier wp-l10n.php et la fonction load_plugin_textdomain() que tu as décrite y est bien !
Ensuite, j’ai ajouté load_plugin_textdomain(‘wpuo’); au fichier useronline.php qui se trouve dans le fichier plugin et pas dans wp-useronline.php qui se trouve à la racine ! J’ai bien nommé le fichier MO ! Mais rien n’y fait !
Pour ma part, je ne sais vraiment plus quoi faire ! Sachant que passé outre mes capacités 😋
Merci de ton aide !
😉
17 juin 2006 à 8 h 33 min #575490Pour traduire un plugin :
Vérifier que :
chargement des bonnes fonctions :
require_once(ABSPATH . ‘wp-includes/streams.php’);
require_once(ABSPATH . ‘wp-includes/gettext.php’);Spécifier le chemin du plugin:
define(‘MyPluginPath’,dirname(__FILE__).’/’);
Ensuite spécifier le repertoires des langues :
load_textdomain(‘Nomduplugin(1)’, MyPluginPath.’/languages/fichier.mo’);
Enfin pour chaques occurences à traduire :
__(‘occurence’, ‘Nomduplugin’)
ou
_e(‘occurence’, ‘Nomduplugin’)
reference au nom du plugin situé dans le ptit (1)
Ca fonctionne chez moi 😉
17 juin 2006 à 9 h 26 min #575491Ca fonctionne uniquement en précisant le fichier chez moi…
Je sais pas trop comment éviter de pas le préciser
pour avoir un truc dynamique18 juin 2006 à 11 h 26 min #575492Salut AmO,
Merci pour les explications mais j’y arrive pas !
Je vais relancer le créateur pour qu’il internationalise ses extensions !
J’aurais aimer savoir le faire à vrai dire !
😉
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.