{"id":1250,"date":"2009-12-17T12:29:38","date_gmt":"2009-12-17T11:29:38","guid":{"rendered":"http:\/\/flaven.fr\/?p=1250"},"modified":"2013-09-25T11:01:50","modified_gmt":"2013-09-25T09:01:50","slug":"wordpress-poedit-localiser-avec-poedit-un-theme-wordpress-a-laide-du-fichier-de-langue","status":"publish","type":"post","link":"https:\/\/flaven.fr\/2009\/12\/wordpress-poedit-localiser-avec-poedit-un-theme-wordpress-a-laide-du-fichier-de-langue\/","title":{"rendered":"WordPress, poEdit &#8211; localiser avec poEdit un th\u00e8me WordPress \u00e0 l&#8217;aide du fichier de langue"},"content":{"rendered":"<p><!-- WordPress, poEdit - localiser avec poEdit un th\u00e8me WordPress \u00e0 l'aide du fichier de langue  --><br \/>\n<!--  WordPress, poEdit, localiser, th\u00e8me WordPress, traduction, langue   --><br \/>\nOn va livrer le <code>.po<\/code> aux roses de la localisation de votre th\u00e8me. Imaginons un cas de figure simple et diablement r\u00e9el, en clair &#8220;un business case&#8221;, vous souhaitez faire un th\u00e8me multilingue \u00e0 partir d&#8217;un th\u00e8me existant. <!--more-->Cela va sans dire le th\u00e8me est loin d&#8217;avoir \u00e9t\u00e9 pr\u00e9vu pour \u00eatre utilis\u00e9 dans une langue autre que celle de Shakespeare. <b>Pour une compr\u00e9hension rapide et se permettre des mauvais jeux de mots,  nous faisons r\u00e9f\u00e9rence directement \u00e0 l&#8217;extension du fichier pour d\u00e9signer les deux fichiers de traduction indispensables sous Wordpdress : le fichier source <code>fr_FR.po<\/code> et sa version <code>fr_FR.mo<\/code> compil\u00e9.<\/b><\/p>\n<p>Pour information, selon wikipedia et pour votre information, <i>Poedit est un logiciel libre d&#8217;aide \u00e0 la traduction utilisant la biblioth\u00e8que Gettext. C&#8217;est une aide pour le processus de d\u00e9veloppement d&#8217;internationalisation et de localisation.<\/i>. Nous utiliserons quant \u00e0 nous comme logiciel pour \u00e9diter le <code>.po<\/code>, notre logiciel d&#8217;\u00e9dition habituel : TextMate.<\/p>\n<p><b>Dans notre exemple, notre th\u00e8me se nomme <code>nom-du-theme<\/code>. Ce th\u00e8me comprend les deux fichiers <code>fr_FR.po<\/code> et sa version compil\u00e9e <code>fr_FR.mo<\/code> sous PoEdit.<\/b><\/p>\n<h2>Le <code>.po<\/code> de FR<\/h2>\n<p>Vous ouvrez le fichier <code>fr_FR.po<\/code> avec un \u00e9diteur genre <code>Notepad ++<\/code> sur PC, <code>TextMate<\/code> sur Mac. Vous y ajoutez les lignes manquantes et le tour est jou\u00e9 avec la traduction en dessous. Il ne vous reste ensuite qu&#8217;\u00e0 enregistrer en <code>fr_FR.po<\/code> puis \u00e0 envoyer le tout en FTP dans le r\u00e9pertoire du th\u00e8me qui est celui de votre site.<\/p>\n<p><b>Un <code>fr_FR.po<\/code> <code>fr_FR.mo<\/code> sur mesure dans un th\u00e8me WP<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/12\/wp_translate_the_po_1.jpg\" alt=\"Wordpress, poEdit - localiser avec poEdit un th\u00e8me WordPress \u00e0 l'aide du fichier de langue\" width=\"500\" height=\"265\" \/><\/p>\n<h4>Les fonctions de traduction de WP<\/h4>\n<p>On trouve de texte en anglais souvent coll\u00e9 en dur dans l&#8217;ensemble de fichiers <code>.php<\/code> qui constituent votre th\u00e8me WP. Il faut rechercher et remplacer ces textes \u00e9crits &quot;en dur&quot; afin de les remplacer par des fonctions de traduction propres \u00e0 un bon fonctionnement WP.<\/p>\n<p>A votre disposition, pour traduire, vous avez globalement deux types de fonction: <\/p>\n<ul>\n<li><code>__ ('phrase-en-anglais', 'nom-du-theme');<\/code>, cette fonction permet de passer une traduction figurant dans le fichier <code>.mo<\/code> dans une fonction par exemple. Le second param\u00e8tre permet d&#8217;indiquer le chemin vers notre th\u00e8me WP nomm\u00e9 <code>nom-du-theme<\/code>. <b>Ce param\u00e8tre est indispensable<\/b><\/li>\n<li><code>_e ('phrase-en-anglais', 'nom-du-theme');<\/code>, cette fonction fait un \u00e9quivalent <code>php<\/code> de la commande <code>echo<\/code>. Cette derni\u00e8re publie la traduction figurant dans le fichier <code>.po<\/code> et de sa version compil\u00e9e <code>.mo<\/code>. Le second param\u00e8tre permet d&#8217;indiquer le chemin vers notre th\u00e8me WP nomm\u00e9 <code>nom-du-theme<\/code>. <b>Ce param\u00e8tre est indispensable<\/b><\/li>\n<\/ul>\n<h4>Un cas concret de traduction<\/h4>\n<p>Prenons les textes \u00e0 traduire de la page d&#8217;erreur 404 d&#8217;un th\u00e8me \u00e9crit initialement en anglais.<\/p>\n<p><b>La premi\u00e8re chose \u00e0 faire, il faut placer cette fonction <code>load_theme_textdomain('nom-du-theme');<\/code> dans le fichier <code>functions.php<\/code>. Ce fichier est parti prenante de votre th\u00e8me WP.<\/b><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n&lt;?php \r\n\/* for the french version *\/\r\nload_theme_textdomain('nom-du-theme');\r\n ?&gt;\r\n<\/pre>\n<p><b>La visualisation du <code>.po<\/code> via <code>Poedit<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/12\/wp_translate_the_po_2.jpg\" alt=\"Wordpress, poEdit - localiser avec poEdit un th\u00e8me WordPress \u00e0 l'aide du fichier de langue\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Le code source du fichier <code>fr_FR.po<\/code><\/b><\/p>\n<pre lang=\"txt\">\r\n\t#: comments.php:102\r\n\tmsgid \"Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.\"\r\n\tmsgstr \"La mod\u00e9ration des commentaires est active et cela peut retarder la publication de votre commentaire. Il n'est pas n\u00e9cessaire de publier \u00e0 nouveau votre commentaire.\"\r\n\r\n\t#: comments.php:102\r\n\tmsgid \"Please note:\"\r\n\tmsgstr \"A noter :\"\r\n\r\n\t#: category.php:18\r\n\tmsgid \"Read More...\"\r\n\tmsgstr \"En savoir plus...\"\r\n\r\n\t#: 404.php:12\r\n\tmsgid \"Error 404 - Not Found\"\r\n\tmsgstr \"Erreur 404 - Aucun fichier trouv\u00e9\"\r\n\r\n\t#: 404.php:16\r\n\tmsgid \"Try Going back home\"\r\n\tmsgstr \"Essayer de repartir vers la page d'accueil\"\r\n\r\n\t#: 404.php:20\r\n\tmsgid \"Or use the search form in the sidebar to find what you're looking for...\"\r\n\tmsgstr \"Ou utilisez la recherche situ\u00e9 dans la barre de c\u00f4t\u00e9 pour trouver ce que vous cherchez...\"\r\n<\/pre>\n<p><b>Le <code>fr_FR.po<\/code> sous TextMate. Cela permet plus facilement d&#8217;ajouter des lignes dans ce fichier <code>fr_FR.po<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/12\/wp_translate_the_po_7.jpg\" alt=\"Wordpress, poEdit - localiser avec poEdit un th\u00e8me WordPress \u00e0 l'aide du fichier de langue\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Un type de texte non-traduit dans un template WP sur la page 404 <code>404.php<\/code><\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/12\/wp_translate_the_po_3.jpg\" alt=\"Wordpress, poEdit - localiser avec poEdit un th\u00e8me WordPress \u00e0 l'aide du fichier de langue\" width=\"500\" height=\"265\" \/><\/p>\n<p><b>Les textes d\u00fbment traduits \u00e0 l&#8217;aide des foncions de WP<\/b><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n&lt;?php _e('Error 404 - Not Found', 'nom-du-theme'); ?&gt;\r\n\r\n &lt;p&gt;&lt;small&gt;&lt;strong&gt;&lt;?php _e('Please note:', 'nom-du-theme'); ?&gt;&lt;\/strong&gt; &lt;?php _e('Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.', 'panama'); ?&gt;&lt;\/small&gt;&lt;\/p&gt;\r\n<\/pre>\n<p><b>Le rendu de la m\u00eame du th\u00e8me cette fois-ci traduit \u00e0 l&#8217;aide du <code>fr_FR.po<\/code> et <code>fr_FR.mo<\/code> mis \u00e0 jour<\/b><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/flaven.fr\/wp-content\/uploads\/2009\/12\/wp_translate_the_po_6.jpg\" alt=\"Wordpress, poEdit - localiser avec poEdit un th\u00e8me WordPress \u00e0 l'aide du fichier de langue\" width=\"500\" height=\"265\" \/><\/p>\n<h4>Des cas plus complexes de traduction<\/h4>\n<p>On s&#8217;est content\u00e9 de traduire avec l&#8217;aide de la fonction la plus simple : <code>_e('Error 404 - Not Found', 'nom-du-theme');<\/code> qui permet d&#8217;afficher dans la page 404, la ligne suivante <code>Erreur 404 - Aucun fichier trouv\u00e9<\/code><\/p>\n<p><b>Un premi\u00e8re d&#8217;usage de la fonction <code>__()<\/code><\/b><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n&lt;?php comments_number( __('0 comment', 'nom-du-theme'), __('1 comment', 'nom-du-theme'), __('% comments', 'nom-du-theme') ); ?&gt;\r\n<\/pre>\n<p><b>Un deuxi\u00e8me usage de la fonction <code>__()<\/code><\/b><\/p>\n<p><i>Le code non-traduit<\/i><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n&lt;p&gt;You must be &lt;a href=\"&lt;?php echo get_option('siteurl'); ?&gt;\/wp-login.php?redirect_to=&lt;?php echo urlencode(get_permalink()); ?&gt;\"&gt;logged in&lt;\/a&gt; to post a comment.&lt;\/p&gt;\r\n<\/pre>\n<p><i>Le m\u00eame code mais correctement traduit<\/i><\/p>\n<pre lang=\"php\" escaped=\"true\">\r\n<p>&lt;?php printf(__('You must be <a href=\"%s\">logged in<\/a> to post a comment.', 'nom-du-theme'), wp_login_url( get_permalink() )); ?&gt;<\/p>\r\n<\/pre>\n<h2>Pour aller plus loin<\/h2>\n<ul>\n<li>La page du Codex de WordPress consacr\u00e9 \u00e0 la question de la traduction Translating WordPress<br \/>\n\t\t<a href=\"http:\/\/codex.wordpress.org\/Translating_WordPress\" target=\"_blank\">http:\/\/codex.wordpress.org\/Translating_WordPress<\/a><\/li>\n<li>Les fichiers de la traduction fran\u00e7aise<br \/>\n\t\t\t<a href=\"http:\/\/www.wordpress-fr.net\/telechargements\" target=\"_blank\">http:\/\/www.wordpress-fr.net\/telechargements<\/a><\/li>\n<li>Le blog de  Xavier Borderie  qui contribue beaucoup tant sur le JDN D\u00e9veloppeurs ou son blog WP ainsi que lors des Wordcamps, bref complet<br \/>\n\t\t\t\t<a href=\"http:\/\/xavier.borderie.net\/wp-fr\/\" target=\"_blank\">http:\/\/xavier.borderie.net\/wp-fr\/<\/a><\/li>\n<li>Le site de l&#8217;outil PoEdit pour vous aider \u00e0 compiler le <code>.po<\/code> en <code>.mo<\/code><br \/>\n\t\t<a href=\"http:\/\/www.poedit.net\/\" target=\"_blank\">http:\/\/www.poedit.net\/<\/a><\/li>\n<li>Le site de l&#8217;outil TextMate \u2014 The Missing Editor for Mac OS X<br \/>\n\t\t\t<a href=\"http:\/\/www.poedit.net\/\" target=\"_blank\">http:\/\/www.macromates.com\/<\/a><\/li>\n<li>Le site de l&#8217;\u00e9diteur PC <code>NOTEPAD++<\/code> <br \/>\n\t<a href=\"http:\/\/notepad-plus.sourceforge.net\/fr\/site.htm\" target=\"_blank\">http:\/\/notepad-plus.sourceforge.net\/fr\/site.htm<\/a><\/li>\n<li>Un article de ce blog consacr\u00e9 aux questions de traduction<br \/>\n\t\t<a href=\"http:\/\/social.hecube.net\/blog\/2009\/09\/04\/wordpress-les-plugins-de-traduction-ou-comment-traduire-son-blog\/\">http:\/\/social.hecube.net\/blog\/2009\/09\/04\/wordpress-les-plugins-de-traduction-ou-comment-traduire-son-blog\/<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>On va livrer le .po aux roses de la localisation de votre th\u00e8me. Imaginons un cas de figure simple et diablement r\u00e9el, en clair &#8220;un&hellip; <\/p>\n<p class=\"text-center\"><a href=\"https:\/\/flaven.fr\/2009\/12\/wordpress-poedit-localiser-avec-poedit-un-theme-wordpress-a-laide-du-fichier-de-langue\/\" class=\"more-link\">Continue reading &rarr; <span class=\"screen-reader-text\">WordPress, poEdit &#8211; localiser avec poEdit un th\u00e8me WordPress \u00e0 l&#8217;aide du fichier de langue<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":9413,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"bf_ai_meta_description":"Localisez un th\u00e8me WordPress avec poEdit. Utilisez les fichiers fr_FR.po et fr_FR.mo pour cr\u00e9er un th\u00e8me multilingue \u00e0 partir d'un th\u00e8me existant.","bf_ai_og_title":"Localiser un th\u00e8me WordPress avec poEdit","footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[3440,3444,3445,3447,3449,3450,3451,3435,3452],"tags":[2239,273,274,275,240,2223],"class_list":["post-1250","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-infrastructure","category-programming-databases","category-seo-web-marketing","category-technology-trends","category-tutorials-how-to","category-ux-product-design","category-web-design-front-end","category-web-development","category-wordpress-cms","tag-langue","tag-localiser","tag-poedit","tag-theme-wordpress","tag-traduction","tag-wordpress"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p3Vuhl-ka","jetpack_featured_media_url":"https:\/\/flaven.fr\/wp-content\/uploads\/2011\/09\/wp_logo_generic3_g_bf.jpg","_links":{"self":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/1250","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/comments?post=1250"}],"version-history":[{"count":1,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/1250\/revisions"}],"predecessor-version":[{"id":9490,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/posts\/1250\/revisions\/9490"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media\/9413"}],"wp:attachment":[{"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/media?parent=1250"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/categories?post=1250"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flaven.fr\/happy-api\/wp\/v2\/tags?post=1250"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}