11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai un petit problème pour retrouver les variables de langue en javascript alors que j'ai défini celles ci en PHP, le tout en vue de l'internationalisation des alertes ou box javascript.

Voilà comment je défini en PHP, ceci est fait pour la traduction avec gettext et je me demandais s'il était possible de retrouver la langue avec javascript ?


setlocale(LC_ALL, $lang);
putenv('LANG='.$lang);
putenv('LANGUAGE='.$lang);
bindtextdomain($textdomain, 'l10n');
bind_textdomain_codeset($textdomain,"UTF-8");
textdomain($textdomain);	


Merci pour votre aide
Modifié par Xou (26 Nov 2008 - 14:42)
Salut,

Je n'ai pas connaissance du fonctionnement exact des mécanismes d'i18n en PHP, mais a priori il faut que d'une façon ou d'une autre tu transmettes la valeur courante de la langue au code JS, car celui-ci n'est pas en relation avec le code PHP qui s'exécute sur le serveur.

Exemple :
<script type="text/javascript">
  var curLang = "<?php echo $lang; ?>";
</script>


<edit>Ou alors, tu peux passer directement les messages localisés au code JS avec gettext...
Modifié par Julien Royer (26 Nov 2008 - 10:50)
J'ai fait un .js externe pour que ça soit bien fait donc pas possible de mettre du PHP au milieu, sinon je crois que je vais passer la variable $lang au script et faire ma petite fonction de traduction js maison.
Xou a écrit :
J'ai fait un .js externe pour que ça soit bien fait donc pas possible de mettre du PHP au milieu

Si, c'est tout à fait possible. Solution la plus simple : tu renommes ton fichier "monscript.js" en "monscript.js.php". Selon comment ton serveur est configuré, une requête sur "monscript.js" devrait automatiquement faire appel au fichier "monscript.js.php". Par contre, tu perds dans ce cas-là la gestion automatique du cache, ce qui est assez gênant...

Je pense qu'il est en effet préférable d'avoir un paramètre généré dans la page HTML elle-même.
Modifié par Julien Royer (26 Nov 2008 - 11:21)
Bon ben finalement traduction avec gettext en PHP et passage au script en paramètre du script appelé, ca marche !

Merci Julien de t'être penché sur le problème
Xou a écrit :
Bon ben finalement traduction avec gettext en PHP et passage au script en paramètre du script appelé, ca marche !

Je pense que c'est la solution la plus intelligente, en effet. Il faut juste faire attention à bien échapper les caractères du message :
<script type="text/javascript">
  // Attention par exemple ici aux caractères " dans le message...
  monscript("<?php echo $message; ?>");
</script>
A vrai dire, la source est en anglais, et j'ai pas d'apostrophes dans le source, par contre dans poedit, le logiciel de traduction permettant de généré les .po (fichiers de traduction utilisés par gettext), j'ai mis des ’ &rsquo; histoire d'étiver tous problèmes.

Sachant que sur l'appli je dois avoir 3 boites de message javascript alors je me prends pas trop la tête !
Modifié par Xou (26 Nov 2008 - 15:28)