2012-04-24 4 views
2

Ok, quel est le problème ici?PHP setlocale sur WAMP échouer pour pt_BR

header('Content-type: text/html; charset=utf-8'); 

setlocale(LC_ALL, NULL); 
setlocale(LC_ALL, 'pt_BR'); 

echo "<p>São Paulo, " . date("d \d\e F \d\e Y", time()) . "</p>"; 

echo "<p>Preferred locale on this system is '" . setlocale(LC_ALL, NULL) . "'</p>"; 

échos:

São Paulo, 24 de April de 2012 
Preferred locale on this system is 'Portuguese_Brazil.1252' 

a également essayé quelque chose comme:

setlocale(LC_ALL, 'Portuguese_Brazil.1252', 'bra', 'brazil', 'pt_BR', 'pt_BR.iso-8859-1', 'pt_BR.utf-8', 'portuguese', 'portuguese-brazil', 'ptb'); 

Mais rien fait la april 'devient 'ABRIL'.

thx. PS: Le document est UTF.8 (sans nomenclature) formées sur l'EDI.

+1

Ceci est un problème commun - J'ai vu une version différente de exactement cette question [ici avant] (http://stackoverflow.com/questions/10030437). Peut-être que [ceci] (http://www.tek-tips.com/viewthread.cfm?qid=664705) aidera? Le plus court de tout cela est que vous devez installer les paramètres régionaux pt_BR sur votre machine serveur. – DaveRandom

+0

@DaveRandom J'ai vérifié la configuration du serveur, Apache et PHP lui-même. (même configuration de fuseau horaire). Aucun n'est mal configuré. Aussi, comme vu sur le test ci-dessus le setlocale renvoie correctement étant donné la localisation préférée pour les systèmes est déjà portuguese_brasil.1252. –

+0

Avez-vous vérifié si pt_BR a correctement défini le nom du mois? Je veux dire que c'est peut-être «avril» dans la région elle-même. – c2h5oh

Répondre

3

J'ai eu le même problème sur un hébergement partagé et juste fait ma propre fonction locale.

MISE À JOUR:

Eh bien, si vous avez installé la langue il suffit d'utiliser strftime() au lieu de la date()

De la documentation PHP:

To format dates in other languages, you should use the setlocale() and strftime() functions instead of date().

Essayez ceci:

header('Content-type: text/html; charset=utf-8'); 

setlocale(LC_ALL, NULL); 
setlocale(LC_ALL, 'Portuguese_Brazil.1252'); 

echo "<p>São Paulo, " . strftime("%d de %B de %Y", time()) . "</p>"; 

echo "<p>Preferred locale on this system is '" . setlocale(LC_ALL, NULL) . "'</p>"; 
+0

semble une bonne fonction, mais ce que je cherche, c'est comment configurer correctement. THX. –

+1

Mis à jour ma réponse. –

+0

ERREUR: la page Web n'est pas pour votre Windows, est pour les lecteurs, et ils ne sont pas des utilisateurs de "charset Windows 1252", ils utilisent UTF8 (!). Est plus correct d'utiliser 'setlocale (LC_ALL, 'pt_BR.utf-8')'. –

-1

strftime("%d de %B de %Y", time()). Travailler !!