Bonjour à tous,
J'ai suivi le petit tutoriel de Grafikart sur l'internationalisation de notre site. Tous se passe (plus ou moins) bien, j'ai aucune erreur dans mon php, mes traductions sont bien... mais la traduction n'apparait pas quand je rajoute mon petit ?lang=en_US après mon url. C'est assez embêtant en fait ^^

Je partage mon code (et puis comme je suis un fou l'url du site aussi : Comming soon) :

INDEX.PHP
<?php ini_set('display_errors', 1); require "localization.php"; ?>

<!-- HTML-->

<html>
<head>
	<meta charset="utf-8" />
    <link rel="stylesheet" href="css/grid.css" />
    <link rel="stylesheet" href="css/style.css" />
    <title>COMMING SOON</title>
</head>
 
<body>
<div class="container_12">
	<div class="grid_2">
	</div>
	<div class="grid_8">
		<center>
			<div class="box">
				<div class="ttl">Coming Soon</div>
				<div class="msg"> <?php echo _("Ce projet n'est pas tout à fait prêt, entrer votre Email ci-dessous et nous vous avertirons lorsque nous serons prêts, vous pouvez nous suivre sur"); ?> <a href="http://twitter.com" style="color:#88c6ff;">twitter</a></div>
				<div class="mail"><input type="email" placeholder="<?php echo _("Entrer votre Email") ; ?>" class="input" maxlength="34"/><input type="submit" value="Subscribe" ></div>
				<div class="msg2"><?php echo _("Nous n'allons ni vendre ni louer votre adresse e-mail"); ?></div>
			</div>
			<div class="copy">
				<img src="img/twitter.png" width="31px" height="24px">
				<p>© 2012</p>
			</div>
		</center>
	</div>
	<div class="grid_2">
	</div>
</body>
</html>


LOCALIZATION.PHP
<?
// define constants
define('PROJECT_DIR', realpath('./'));
define('LOCALE_DIR', PROJECT_DIR .'/locale');
define('DEFAULT_LOCALE', 'fr_FR');

require_once('lib/gettext/gettext.inc');

$supported_locales = array('en_US', 'fr_FR');
$encoding = 'UTF-8';

$locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;

// gettext setup
T_setlocale(LC_MESSAGES, $locale);
// Set the text domain as 'messages'
$domain = 'traduc.po';
bindtextdomain($domain, LOCALE_DIR);
// bind_textdomain_codeset is supported only in PHP 4.2.0+
if (function_exists('bind_textdomain_codeset')) 
  bind_textdomain_codeset($domain, $encoding);
textdomain($domain);

header("Content-type: text/html; charset=$encoding");
?>


TRADUC.PO (généré grace à Poedit sur Mac)
msgid ""
msgstr ""
"Project-Id-Version: traduc\n"
"POT-Creation-Date: 2012-11-10 15:49+0100\n"
"PO-Revision-Date: 2012-11-10 15:49+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: /Users/valentin/Documents/Valentin/MAMP/commingsoon\n"

#: /Users/valentin/Documents/Valentin/MAMP/commingsoon/index.php:20
msgid ""
"Ce projet n'est pas tout à fait prêt, entrer votre Email ci-dessous et nous "
"vous avertirons lorsque nous serons prêts, vous pouvez nous suivre sur"
msgstr ""
"This project is not quite ready yet enter your email below and we’ll notify "
"you when we’re ready you can follow us on"

#: /Users/valentin/Documents/Valentin/MAMP/commingsoon/index.php:21
msgid "Entrer votre Email"
msgstr "Enter your Email"

#: /Users/valentin/Documents/Valentin/MAMP/commingsoon/index.php:22
msgid "Nous n'allons ni vendre ni louer votre adresse e-mail"
msgstr "We will not sell/ rent your email address"


Voilà je ne vois pas d'ou peu venir ma faute/maladresse. Merci d'avance pour vos super réponses !
Astor
Salut,

Je pense que ton "$domain" ne doit pas inclure l'extension ".po".
Par ailleurs, as-tu bien généré tes fichiers ".mo" dans tes dossiers "LC_MESSAGE" ?

tm
Salut,
Oui mon .mo est bien dans le dossier.
Comment faire pour que mon $domain inclu le .po ?
Merci de ta réponse
$domain = 'traduc';

Avec tes fichiers "traduc.mo" dans les bons dossiers (ex : fr_FR/LC_MESSAGE/)

tm
Je n'ai pas fait de dossier fr_FR vu que ma page est déjà en français, c'est nécessaire ?

En regardant, dans le dossier source gettext j'ai vu les exemples, il s'avere pour je ne sais qu'elle raison que la methode "dropin replacement" ne marche pas chez moi, je suis sous un mac avec chrome à jour Smiley ohwell
Bref a tester ici : http://frizz.olympe.in/phpgettext/examples/
Donc pour moi quand je choisis la methode dropin aucun changement ne se fait, est ce que vous aussi ?
Merci de ta réponse Smiley smile
Bonne soirée
Ezekyel a écrit :
Je n'ai pas fait de dossier fr_FR vu que ma page est déjà en français, c'est nécessaire ?

Je pense que tu dois respecter scrupuleusement cette organisation de dossiers/fichiers (à moins que tu n'aies modifié quelque part la config par défaut).

A noter que, sans vouloir pinailler, tu n'as pas vraiment une page "déjà en français".
Le principe est d'avoir :
- une page (php) avec des chaines "gettext" (et donc aucune trace de langue).
- des fichiers de traductions dans des dossiers langues.
- une gestion dynamique de la traduction à afficher.

Ce que tu as donc, c'est une langue fr_FR par défaut qui permet d'aller chercher, sauf indication contraire, la traduction française dans le dossier fr_FR/LC_MESSAGE/...

Ezekyel a écrit :
En regardant, dans le dossier source gettext j'ai vu les exemples, il s'avere pour je ne sais qu'elle raison que la methode &quot;dropin replacement&quot; ne marche pas chez moi, je suis sous un mac avec chrome à jour Smiley ohwell

Je ne peux pas t'aider pour cela car j'ai toujours utilisé le module gettext directement sur le serveur... Smiley decu

tm
D'accord merci, je vais essayer de refaire le tuto pour voir mais bon... Smiley ohwell
J'ai créé le dossier fr_FR aucun changement, je vais faire une "vraie" page PHP et je reviens donner des nouvelles après Smiley langue Merci beaucoup pour ton aide Smiley cligne
Bonne soirée