Page 1 sur 1
GetText : local et OVH ok... Mais pas Gandi !
Posté : 24 oct. 2010, 11:41
par Didjo
Bonjour !
Première intervention sur ce forum : Bonjour à vous !
Voici le problème... J'ai développé un site multilingue en local, et une fois upgradé chez Gandi, je me rend compte que les fonctions GetText ne marchent pas...
php_info() l'indique
enabled, et sur un serveur chez OVH, pas de soucis...
Voilà le code concerné.
Code : Tout sélectionner
function setlanguage($lang, $langs) {
$lang_iso = $langs[$lang];
putenv("LC_ALL=$lang_iso");
setlocale(LC_ALL, $lang_iso);
$domain = "strings";
bindtextdomain($domain, "./locale");
textdomain($domain);
bind_textdomain_codeset($domain, 'UTF-8');
$_SESSION['lang'] = $lang;
}
// Plein de bla-bla pour déterminer la langue du navigateur, et finalement on arrive à :
$lang = "en"; // ou "fr" ou "ru"
$langs = array("fr" => "fr_FR", "en" => "en_GB", "ru" => "ru_RU");
setlanguage($lang, $langs);
Une idée ? Un problème de localisation des fichiers mo/po ("./locale") ?
Merci de votre aide !

Re: GetText : local et OVH ok... Mais pas Gandi !
Posté : 24 oct. 2010, 23:21
par jojolapine
Bonjour,
déjà qu'entends-tu par "ça ne marche pas!" ?
Si tu est chez gandi, je suppose, que tu as un accès ssh à ta machine?
Si oui vérifie que tes locales son correctement installées:
au besoin fait un
Re: GetText : local et OVH ok... Mais pas Gandi !
Posté : 25 oct. 2010, 01:18
par Didjo
Hello !
D'abord merci de ta réponse.
Effectivement je suis peux explicite...
En fait le contenu des alias _("..."); reste affiché et ne change pas en fonction de la variable affectée...
locale -a
Code : Tout sélectionner
C
POSIX
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US.utf8
en_ZA.utf8
en_ZW.utf8
fr_BE.utf8
fr_CA.utf8
fr_CH.utf8
fr_FR.utf8
fr_LU.utf8
dpkg-reconfigure locales
Utilisateur root dont je ne connais pas le mot de passe (je pense)...
Bon, sauf que je ne comprend tout ça qu'à moitié... Mes fichiers de langue sont dans ./locale/xx_XX/LC_MESSAGES/strings.mo (/po)
Quel rapport avec toutes ces langues au dessus ?
Merci encore !
Re: GetText : local et OVH ok... Mais pas Gandi !
Posté : 25 oct. 2010, 09:08
par jojolapine
Le rapport avec les locales installées, c'est que si elles ne sont pas présentes, tu ne pourras pas faire de bindtextdomain (ou en tout cas ça ne fonctionnera pas)
En l’occurrence ici fr_FR n'y est pas c'est fr_FR.utf8 qui la remplace, pareil pour en_GB...
Et ru_RU n'est même pas présent en utf8

Il va donc te falloir un accès root à ta machine, pas d'autre solution

Re: GetText : local et OVH ok... Mais pas Gandi !
Posté : 25 oct. 2010, 11:49
par Didjo
Ok, donc pour le FN et l'EN je n'ai qu'à rajouter un ".utf8" à la fin du nom...
Et pour le russe, un accès root. Mais pour cela il me faut quitter Gandi AI, et je n'ai aucune connaissance de Gandi si ce n'est ce que j'ai pu faire pour le moment !
Je suis en contact avec le support. Ont-ils moyens de m'installer le russe en UTF8 sans que je n'ai à passer en root ? (je m'en vais leur demander mais peut-être est-tu au courant). Et sinon, une fois en root, j'imagine que c'est grace à dpkg-reconfigure que je pourrais m'installer mon russe...
EDIT
ok c'est bon pour l'anglais :
setlocale(LC_ALL, $lang_iso.".utf8");
Du coup ceci sert-il à quelque chose ?
bind_textdomain_codeset($domain, 'UTF-8');
Re: GetText : local et OVH ok... Mais pas Gandi !
Posté : 25 oct. 2010, 11:57
par jojolapine
Bonjour,
je n'ai jamais utilisé gandi en mode AI, mais toujours en expert... donc je ne peux pas vraiment t'aider sur ce point :/
la seul aide indiquée ici:
http://groups.gandi.net/fr/topic/gandi. ... pert/21814 est pour le mode expert.
Tiens nous au courant de la réponse du support

Re: GetText : local et OVH ok... Mais pas Gandi !
Posté : 25 oct. 2010, 12:01
par jojolapine
Par rapport à bind_textdomain_codeset...
J'avoue que je ne sais pas là...
Moi je ne m'en sert pas :/
Voici le code que j'utilise (attention jamais testé chez gandi!)
switch ($lang) {
case 'en':
$language = 'en_US';
break;
case 'de':
$language = 'de_DE';
break;
default:
$language = 'fr_FR';
break;
}
// On modifie les variables d'environnement
putenv('LANG='.$language);
putenv('LC_ALL='.$language);
putenv('LANGUAGE='.$language);
// On modifie les informations de localisation en fonction de la langue
// tu peux mettre plusieurs "essais" de locales à la suite, il prendra la première qui fonctionne
$locale_set = setlocale(LC_ALL, $language . ".utf8",
$language . ".UTF8",
$language . ".utf-8",
$language . ".UTF-8",
$language);
// On indique les chemins vers le fichier global.mo
bindtextdomain('global', "path/to/locale");
Re: GetText : local et OVH ok... Mais pas Gandi !
Posté : 25 oct. 2010, 12:13
par Didjo
Je viens de tomber dessus !
Par rapport à bind_textdomain_codeset...
J'avoue que je ne sais pas là...
Moi je ne m'en sert pas :/
Voici le code que j'utilise (attention jamais testé chez gandi!)
Ah yeah, j'ai pas pensé à tout tester pour putenv et setlocale (utf8 UTF8 utf-8 etc.). Je m'en vais ajouter ça au miens en prévision d'une future exportation ! Je vais le laisser, on sait jamais ce qu'il peut se passer avec le russe...
Merci !
Tiens nous au courant de la réponse du support

Of course !
Re: GetText : local et OVH ok... Mais pas Gandi !
Posté : 25 oct. 2010, 12:32
par Didjo
C'est installé !
Le support l'a fait pour moi, et tout marche à merveille.
Merci mille fois jojolapine ! =D>
Re: GetText : local et OVH ok... Mais pas Gandi !
Posté : 25 oct. 2010, 13:34
par jojolapine
All right

N'hésite pas à marquer ton sujet comme résolu (sur le message qui t'as aidé)
ça aidera les futurs personnes qui rechercherons celà

Re: GetText : local et OVH ok... Mais pas Gandi !
Posté : 25 oct. 2010, 13:55
par Didjo
Avec plaisir !