
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Waanser &#187; traduction</title>
	<atom:link href="http://www.waanser.com/tag/traduction/feed" rel="self" type="application/rss+xml" />
	<link>http://www.waanser.com</link>
	<description>Un blog utilisant WordPress</description>
	<lastBuildDate>Wed, 07 Jul 2010 21:54:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>gettext</title>
		<link>http://www.waanser.com/php/general-php/184-get-text.html</link>
		<comments>http://www.waanser.com/php/general-php/184-get-text.html#comments</comments>
		<pubDate>Tue, 06 Jan 2009 13:56:22 +0000</pubDate>
		<dc:creator>roul</dc:creator>
				<category><![CDATA[Général]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[traduction]]></category>

		<guid isPermaLink="false">http://www.waanser.com/?p=184</guid>
		<description><![CDATA[L&#8217;utilisation de gettext est certainement la façon la plus sure de traduire un site. Nous allons voir comment l&#8217;installer et l&#8217;utiliser en toute simplicité. Fonctionnement gettext Pour pouvoir appliquer des traductions avec gettext on va avoir besoin de deux types de fichiers : .po : C&#8217;est le fichier où l&#8217;on va entrer les traductions. Ce [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;utilisation de gettext est certainement la façon la plus sure de traduire un site.<br />
Nous allons voir comment l&#8217;installer et l&#8217;utiliser en toute simplicité.<br />
<span id="more-184"></span></p>
<h2>Fonctionnement gettext</h2>
<p>Pour pouvoir appliquer des traductions avec gettext on va avoir besoin de deux types de fichiers :</p>
<ul>
<li><strong>.po</strong> : C&#8217;est le fichier où l&#8217;on va entrer les traductions. Ce fichier est uniquement lisible par les humains.</li>
<li><strong>.mo </strong>: C&#8217;est le fichier compilé  du .po où son stockées les traductions. Ce fichier est uniquement lisible par php.</li>
</ul>
<p><img src="http://media.waanser.com/2009/01/get_texy_fonctionnement.bmp" alt="fonctionnement du get text" title="gettext_fonctionnement" class="alignnone size-full wp-image-197" /></p>
<h2>L&#8217;installation gettext</h2>
<p>Pour l&#8217;installer sur votre serveur, il n&#8217;y a rien de plus simple. Il suffit d&#8217;entrer <em>&laquo;&nbsp;apt-get install php-gettext&nbsp;&raquo;</em> dans votre console linux (attention il faut être loguer en root), Et tout s&#8217;installe automatiquement.</p>
<h2>L&#8217;organisation des traductions</h2>
<p>Pour ne pas se perdre au milieu de tous les fichiers de traductions,  nous allons créer un dossier par langue.</p>
<div id="attachment_209" class="wp-caption alignnone" style="width: 179px"><img src="http://media.waanser.com/2009/01/arbo_sque_trad.png" alt="arborescence gettext" title="arborescence gettext" width="169" height="127" class="size-full wp-image-209" /><p class="wp-caption-text">arborescence gettext</p></div>
<h2>L&#8217;utilisation de gettext en php</h2>
<p>Dans un premier temps vous devez retrouver votre fichier gettext.inc pour l&#8217;inclure<br />
Il doit se situer normalement dans &laquo;&nbsp;/usr/share/php/php-gettext/&nbsp;&raquo;.</p>
<p>Nous allons créer notre premier fichier multilingue : bienvenue.php</p>
<pre class="brush: php">
//inclusion de la librairie gettext
require_once(&#039;/usr/share/php/php-gettext/gettext.inc&#039;);

$dir=setlocale(LC_ALL, &#039;fr_FR&#039;);
if($dir ==&#039;&#039;)
{
	die(&quot;Erreur : la localisation n&#039;est pas implémentée sur votre plate-forme ou la variable de localisation n&#039;existe pas&quot;);
}
// Spécifie la localisation des tables de traduction
bindtextdomain(&quot;welcome&quot;, &quot;./language&quot;);

// Choisit le domaine
textdomain(&quot;welcome&quot;);

// La traduction est cherché dans ./language/fr_FR/LC_MESSAGES/welcome.mo

// Affichage d&#039;un message de test
echo gettext(&quot;hello&quot;).&quot;&lt;/br&gt;&quot;;

// Ou utilisation de l&#039;alias _() pour gettext()
echo _(&quot;goodbye&quot;);
</pre>
<p>Maintenant il faut ouvrir votre page bienvenue.php.<br />
Normalement vous devriez voir le message &laquo;&nbsp;hello&nbsp;&raquo; suivit de &laquo;&nbsp;goodbye&nbsp;&raquo;;<br />
Ceci est normal, vu que gettext ne trouve pas la traduction, il affiche alors le mot non traduit.</p>
<h2> création et compilation des fichiers de traductions</h2>
<p>Tout d&#8217;abord nous allons créer notre fichier de traduction.<br />
Dans votre console linux, positionnez-vous dans le dossier où ce situe votre fichier bienvenue.php</p>
<p>Une fois ceci fait, on lance la comande :<br />
<em>xgettext -kT_gettext -kT_  bienvenue.php</em></p>
<p>Le gettext va alors récupèrer les chaînes à traduire dans le code source bienvenue.php, il va génèrer automatiquement le fichier .po</p>
<p>Un fichier messages.po doit être créer dans la racine, nous allons le renommer welcome.po et le copier dans <em>&laquo;&nbsp;languagefr_FRLC_MESSAGES&nbsp;&raquo;</em></p>
<p>Maintenant nous allons pouvoir éditer notre fichier et traduire les mots répertoriés(de la page bienvenue.php) par get text.</p>
<p>Pour qu&#8217;une traduction soit effectuée, il faut définir un identifiant de message : <strong>msgid</strong> et le texte attacher à celui-ci : <strong>msgtr</strong>.</p>
<p>pour nous nous allons mettre : </p>
<pre class="brush: sql">
#: bienvenue.php:19
msgid &quot;hello&quot;
msgstr &quot;salut&quot;

#: bienvenue.php:20
msgid &quot;goodbye&quot;
msgstr &quot;aurevoir&quot;
</pre>
<p>Pour compiler notre fichier welcome.po, il faut utiliser la commande msgfmt.<br />
Il faut bien sur ce positionner dans le dossier ou est situé welcome.po, et taper &laquo;&nbsp;<em>msgfmt welcome.po -o welcome.mo </em>&nbsp;&raquo;<br />
Normalement vous devez voir apparaître votre fichier welcome.mo.</p>
<p>Voici ce que cela va donner au final sur notre arborecence :</p>
<div id="attachment_206" class="wp-caption alignnone" style="width: 189px"><img src="http://media.waanser.com/2009/01/arbo_trad1.png" alt="arborescence gettext" title="arborescence gettext" width="179" height="235" class="size-full wp-image-206" /><p class="wp-caption-text">arborescence gettext</p></div>
<p>Maintenant vous pouvez ouvrir votre page bienvenue.php</p>
<p>eh la ! Miracle on voit que la traduction se met en français <img src='http://www.waanser.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.waanser.com/php/general-php/184-get-text.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
