OVH Community, votre nouvel espace communautaire.

PHP - Utilisation de gettext


kileak
04/10/2007, 22h32
Exact ! j'utilise UltraEdit et c'est vrai que cette option est dispo. Encore un truc que je pigeais et que grâce à toi...

Merci pour ton compliment que je te retourne pour tes réponses et ton temps !
Bonne fin de soirée (mes paupières sont lourdes )

à+

Narayane
04/10/2007, 22h10
hihi ... vérifies aussi que ton fichier XML en lui-même est bien encodé en UTF8 !
Selon le logiciel que tu utilises pour éditer ton fichier, il faut chercher le menu pour changer l'encodage.

Avec PSPad, je vais dans dans Format puis je clique sur UTF8. Ensuite j'enregistre mon fichier.

Merci pour tes questions polies et bien tournées, ça fait toujours plaisir de pouvoir aider quand les gens sont sympas !

kileak
04/10/2007, 22h04
Merci pour tout !

J'ai réussi à faire ce que je voulais et je vais bien regarder ce qu'est UTF-8
Ca m'étonne vraiment. Je vois parfaitement mon fichier XML au boulot partir en scotch à cause des accents et de son entête UTF-8. Mais surement, comme tu le dis, que mon IE était en ISO... et que par conséquent, il n'a pas aimé

MERCI !

Narayane
04/10/2007, 21h56
Je viens de voir ta modif ... perso avec poedit j'arrive bien à scanner mes fichiers.
Es-tu sûr de ta configuration ?
Si je fais catalogue->configuration, je choisi l'onglet "Chemins", et j'ai "C:\Web\monsite\" comme chemin de base, et "." (juste un point) dans chemins.

J'ai aussi eu des problèmes avec la dernière version de PoEdit quand j'ai fait mes essais (cf date de mes premiers messages), vis à vis de l'UTF-8.
Donc j'ai téléchargé une version un peu plus ancienne et ça allait beaucoup mieux.
On sait jamais, ça pourrait t'être utile de le savoir

Narayane
04/10/2007, 21h50
Pour la base de traduction je n'ai pas vraiment d'idée ... tu peux essayer de partir d'un projet complètement open source où tu peux récupérer les fichiers de traduc non compilés ...

Concernant le charset, je te conseille de revoir ce qu'est l'UTF8
C'est justement un encodage qui supporte tout : les accents, les caractères non latins ...
J'ai choisi l'UTF-8 pour pouvoir proposer des langues comme le grec, et cela marche très bien.
Mais on pense souvent que l'UTF-8 n'affiche pas bien les accents, à tort : en fait c'est que c'est un peu subtil de le mettre en œuvre, et quand ce n'est pas bien fait les accents sont remplacés par des caractères bizarres.
Il faut bien avoir de l'UTF-8 à 100% partout pour que tout marche bien: la base, les fichiers en eux-même, les headers, etc... et donc essayer de mettre ça en place dès le début, sinon ça peut être plutôt lourd !

Pour mettre en œuvre l'UTF-8 avec php, je me suis basée sur ce tutoriel très complet :
http://www.kitpages.fr/php_tutorial_utf8.php
Tu peux aussi regarder ici :
http://www.nicknettleton.com/zine/ph...heatsheet#body

Et un petit tour sur wikipédia sera mieux que mes explications :
http://fr.wikipedia.org/wiki/Utf8

En tout cas si tu dédies ton site à une utilisation purement francophone, pas la peine de te casser la binette, reste en ISO-8859-1

kileak
04/10/2007, 21h39
C'est super !
Merci pour ta réponse si rapide ! Je ne l'espérais pas

Encore 2 choses :
Existe-t-il une base de traduction open de l'anglais => toutes langues ?
Si on ne peut tout traduire à priori, il y a quand même des mots qui reviennent souvent comme "accueil", "identifiant"....
Parce que là je m'arrache les cheveux avec PoEdit

L'autre point concerne le CHARSET : tu dis UTF-8. Mais si je ne m'abuse ce CHARSET ne supporte pas les caractères accentués donc les notres. Je suppose donc que tu donnes ce charset à l'anglais.
Quid de l'allemand ou l'espagnol qui ont aussi des accents ?

merci encore
à+

EDIT : j'avais cru comprendre que PoEdit pouvait scanner des fichiers php pour en dégager les phrases à traduire. J'ai planné parce que j'y arrive pas du tout.

Narayane
04/10/2007, 21h04
Concernant mes compilations ... he bien il n'est pas possible de les faire sur un mutualisé.
Comme je sais qu'à la fin de mon projet je prendrais probablement un hébergement dédié, je compilerais à ce moment-là mes fichiers.
Sinon il faut se trouver un petit pc sur linux !

Tu peux normalement ranger tes fichiers où tu veux.
Personnellement ils sont dans des sous-répertoires lang\en_EN\LC_MESSAGES\, lang\fr_FR\LC_MESSAGES, etc ... donc pas de problème avec les droits d'accès.
C'est avec le bindtextdomain que je précise où aller les chercher.
J'inclue dans chaque page un fichier lang.conf.php, que voici :

Code PHP:
//******************************************************************************
// PARAMETRES DE LANGUE
//******************************************************************************

if(isset($_GET['lng']))
  
$_SESSION['lng']=urldecode($_GET['lng']);
elseif(!isset(
$_SESSION['lng']))
  
$_SESSION['lng']='fr_FR';

setlocale(LC_ALL$_SESSION['lng']);
putenv('LANG='.$_SESSION['lng']);
putenv('LANGUAGE='.$_SESSION['lng']);

bindtextdomain("messages",'/home/exemple/www/lesite/lang');
bind_textdomain_codeset("messages""UTF-8");
textdomain("messages");
?>
Mes fichiers s'appellent donc tous messages.po.

Pour l'installation, je n'ai eu qu'à activer php_gettext sous mon wamp.
Tu devrais vérifier si ta dll est bien présente, et rangée au bon endroit. (vis à vis de tes paramètres php.ini)

Voilà, j'espère que cela pourra t'aider. Bon courage !

kileak
04/10/2007, 20h46
Citation Envoyé par Narayane
Pfiou, après moultes recherches et échanges avec le support, je pense avoir mis la main sur mon problème.

Aussi, si un jour quelqu'un galère aussi, je vais copier une petite phrase trouvée dans un fichier de l'install du framework horde (qui tourne très bien chez ovh et utilise gettext & co. pour les traducs) :



Voilà, c'est tout bête (comme d'hab !)
Mes fichiers étant compilés sous windows, ils ne fonctionneront pas sur les serveurs linux d'ovh !!

PS: il est très utile de parcourir le code en ligne ou de télécharger les sources de horde, pour voir comment ils font certaines choses.
C'est très instructif et pour ceux qui ont un hébergement ovh on sait que ça passe, même sur du mutu !
Tout d'abord merci pour tes feedbacks ! C'est toujours intéressant quand les gens suivent leur topic même s'ils ont trouvé la soluce

J'ai qq questions :

Comment as-tu relancé tes compil sur un Mutu ?
Où as-tu déposé ces fichiers ? On est limité (il me semble) en terme d'accès sur un Mutu. Je n'ai pas accès au répertoire /locale/ que je trouve dans tous les tutos.
J'ai easyphp pour dév sous XP. Comment as-tu installé Gettext ? EasyPhp me dit qu'il ne trouve pas php_gettext.dll.

merci pour ton aide !

à+

Narayane
04/06/2007, 22h27
Pfiou, après moultes recherches et échanges avec le support, je pense avoir mis la main sur mon problème.

Aussi, si un jour quelqu'un galère aussi, je vais copier une petite phrase trouvée dans un fichier de l'install du framework horde (qui tourne très bien chez ovh et utilise gettext & co. pour les traducs) :

Since the .mo files are binary, they are platform specific.
You have to rerun make in all po directories.
Voilà, c'est tout bête (comme d'hab !)
Mes fichiers étant compilés sous windows, ils ne fonctionneront pas sur les serveurs linux d'ovh !!

PS: il est très utile de parcourir le code en ligne ou de télécharger les sources de horde, pour voir comment ils font certaines choses.
C'est très instructif et pour ceux qui ont un hébergement ovh on sait que ça passe, même sur du mutu !

Narayane
31/05/2007, 08h47
Oui c'est une solution plus simple d'un point de vue mise en oeuvre, mais je ne me vois pas trop filer un fichier include php à un non-informaticien pour qu'il me fasse les traducs ...

De plus il existe des éditeurs très sympathiques pour gérer les traductions, comme POEdit. Ce gentil programme parcourt ton code à la recherche des endroits où tu appelles la fonction gettext, et tu n'as plus ensuite qu'à proposer une traduction, et il te génère le fichier compilé.

Enfin plus simple ... je ne dirais pas que c'est si compliqué que ça, je n'ai pas eu trop de mal à faire fonctionner tout ce petit monde sur mon poste, mais je dois rater une subtilité pour faire marcher le tintouin chez ovh

C'est plus compliqué de faire fonctionner tout un site en UTF-8 que d'implémenter gettext ...

Abogil
31/05/2007, 08h14
Personnelement, j'utilise des variables pour afficher tous mes textes, titres et boutons.
J'ai ensuite défini un fichier include par langue avec les définitions des variables.

Narayane
31/05/2007, 07h33
Personne n'a une petite suggestion (je suis à court d'idées) ou a déjà expérimenté gettext ?

Narayane
28/05/2007, 18h34
Bonjour à tous et toutes,

J'aurais souhaité utiliser les fonctionnalités liées à la fonction PHP gettext sur mon espace mutualisé (un 240plan).

Avant de faire des essais en local avec cette fonction, j'ai d'abord vérifié que le module était activé au niveau de PHP, ce qui est le cas : http://240plan.ovh.net/infos/test.php, et que les serveurs étaient redémarrés de temps à autre pour prendre en compte les modifications de mes fichiers de traduction (compilés), cf guide OVH "Guide hébergement - généralités" :
Attention !La copie de votre site, de vos espaces ftp et real ainsi que de vos bases Mysql n'est pas effectuée par le basculement.
Vous devez la réaliser vous-même. Votre site sera inaccessible jusqu'au redémarrage de nos serveurs, le matin à 9h00, nous vous conseillons donc de basculer votre hébergement en soirée.
J'ai donc monté une petite page de test, et trois fichiers de traduction, en français, anglais, et grec.
J'ai réussi à faire fonctionner cette petite page en local, sur mon wamp, sans trop de soucis.
Après avoir uploadé mes fichiers, et vérifié mes chemins, j'ai testé ma page distante, et malheureusement les traductions ne sont pas prises en compte.
Je n'ai pas de message d'erreur, mais juste le fonctionnement par défaut de la fonction gettext() qui renvoie la chaîne passée en paramètre si jamais elle ne trouve pas de traduction.

J'ai contacté le support, mais ils ont visiblement du mal à m'aider, aussi je me demandais simplement si quelqu'un n'avait pas déjà utilisé cette fonction sur un mutualisé.

Merci !