WordPress : problème de localisation sur les systèmes 64 bits
Lors d’un upgrade vers la version 2.0.5 sur le blog d’un client, je me suis aperçue que la localisation n’était pas prise en compte. Ce problème survenait uniquement sur le serveur de mon client… étrange…
Après avoir tourné en rond devant ce problème, j’ai enfin trouvé la solution sur le forum de WordPress dans ce post.
Comme il n’est pas utile de refaire le monde, je me contenterai de traduire ce que j’ai lu et mis en application. Le résultat ne s’est pas fait attendre, ça fonctionne !
Le système de localisation de WordPress semble ne pas fonctionner sur les systèmes 64 bits. Procédez aux modifications décrites ci-dessous dans wp-includes/gettext.php afin de le réparer. Vous devrez ajouter une ligne et en modifier une autre.
(vers la ligne 100 dans gettext.php)
$this->enable_cache = $enable_cache;
// $MAGIC1 = (int)0x950412de; //bug in PHP 5
$MAGIC1 = (int) - 1794895138;
// $MAGIC2 = (int)0xde120495; //bug
$MAGIC2 = (int) - 569244523;
$MAGIC3 = (int) 2500072158; // < - 64 BIT FIX: AJOUTEZ CETTE LIGNE !
$this->STREAM = $Reader;
$magic = $this->readint();
if ($magic == $MAGIC1 || $magic == $MAGIC3) { // < - 64 BIT FIX: MODIFIEZ CETTE LIGNE !
$this->BYTEORDER = 0;
} elseif ($magic == $MAGIC2) {
$this->BYTEORDER = 1;
} else {
$this->error = 1; // not MO file
return false;
}













9 décembre, 2006 à 5:32 :
Merci pour cette solution. Mon tableau de bord avait basculé sans raison apparente en anglais. Je soupçonne un changement quelconque fait par mon hébergeur. J’ai suivi à la lettre les consignes et tout est rétabli !
12 décembre, 2006 à 9:24 :
Merci pour cette modif qui a comme par magie réglé mon probléme ! Je n’ai pas tout compris ce que j’ai modifié car je suis loin d’être une pro du php mais ça marche !!
C’est Magique cette ligne de “$MAGIC3″ à rajouter !
Comme la personne ci-dessus, mon interface admin de wordpress était passée tte seule en anglais ( on dirait qu’il y a du bidouillage chez free en ce moment ! )
Encore merci bcp pour cette solution !!
16 décembre, 2006 à 2:40 :
Bonjour et merci
Mon problème était le même qu’avaient fantôme et delfine. Mon interface d’administration et divers champs du blog comme l’affichage des dates étaient passé en anglais.
La soluce est la bonne
7 janvier, 2007 à 9:29 :
Ravie de vous avoir dépannés. J’ai tellement galéré pour trouver ça que j’ai jugé utile de le mettre ici, d’une part pour aider ceux qui ont le même souci, d’autre part pour ne pas oublier comment gérer le problème
27 février, 2007 à 1:57 :
Dans la version de WordPress 2.1.1, bien qu’une ligne dans gettext.php indique que le problème est géré, il n’en est rien. Après un test effectué, j’ai appliqué la règle que j’énonce dans ce billet et ça marche. Donc ça reste valable.
5 juin, 2007 à 2:10 :
La version 2.2 de WP a ces lignes déjà mises :
// $MAGIC1 = (int)0x950412de; //bug in PHP 5.0.2, see https://savannah.nongnu.org/bugs/?\
func=detailitem&item_id=10565
$MAGIC1 = (int) – 1794895138;
// $MAGIC2 = (int)0xde120495; //bug
$MAGIC2 = (int) – 569244523;
// 64-bit fix
$MAGIC3 = (int) 2500072158;
Mais cela ne fonctionne pas pour autant sur mon serveur 64-bits : tout reste en anglais
11 juillet, 2007 à 4:26 :
Pour WordPress 2.2.x, il faut juste modifier la ligne 118
if ($magic == ($MAGIC1 & 0xFFFFFFFF) || $magic == ($MAGIC3 & 0xFFFFFFFF)) { // to make sure it works for 64-bit platforms
et la remplacer par
if ($magic == $MAGIC1 || $magic == $MAGIC3) {
car contrairement à ce qui est écrit, le bug n’est pas résolu.
En procédant ainsi, ça fonctionne, je viens d’avoir le cas de figure à l’instant.