2010-05-04 15 views
6

tengo el siguiente fragmento de código:setlocale tener ningún efecto en PHP

setlocale(LC_ALL, "de"); 
print(strftime("%A %e %B %Y", time())); 

y se está imprimiendo

Martes 4 de mayo de 2010

en lugar de

Dienstag 4. Mai 2010

¿Alguna idea de por qué? ¿Como arreglar?

Respuesta

14

Tiene la configuración regional de disponible; ¿Qué devuelve setlocale para usted? Ver: return values for setlocale().

Además, verifique la lista de configuraciones regionales disponibles (por ejemplo, locale -a o lo que sea adecuado para su sistema operativo) para ver si de se encuentra entre ellas. Las alternativas probables incluyen de_DE o por nombrar algunas.

En Debian, para generar un nuevo local, ejecute este comando:

dpkg-reconfigure locales 

y recoger las que desee.

5

Establecer la configuración regional no tendrá efecto si la configuración regional no está instalada en su sistema.

3

Pruebe la configuración LC_ALL para "de_DE". En mi sistema no funcionaría hasta que lo hiciera.

$ LC_ALL=de date 
Tue May 4 07:40:13 CDT 2010 
$ LC_ALL=de_DE date 
Di 4. Mai 07:39:27 CDT 2010 
4

Para mí la siguiente hizo el truco:

setlocale(LC_TIME, ""); 

En combinación con:

echo strftime("%d. %B %Y"); 

Eso es lo que me dio la fecha actual en formato alemán. Espero que pueda ayudar.

3

estoy usando Ubuntu en Frambuesa Pi, tenían el mismo problema tratando de utilizar el portugués local para la fecha:

setlocale(LC_TIME, "C"); 
echo strftime("%A"); 
echo setlocale(LC_TIME, "pt_PT"); 
echo strftime(" in Portuguese %A"); 

después se comprueba con el comando locales -a, es_ES no estaba en la lista, por lo que añade que sudo/usr/share/lugares/instalar language-pack-es_ES y ejecutar -a locales la cabeza y ahí estaba pt_PT.utf8. Después de esto, el resultado sigue siendo el mismo: el resultado esperado para pt_PT aún está en inglés. Aquí es la pequeña diferencia que hacen las cosas trabajar para mí:

··· 
echo setlocale(LC_TIME, "pt_PT.utf8"); 
··· 

Por lo tanto, tuve que dar la es_ES en pt_PT.utf8

+0

Esto es lo que funcionó para mí. Lo que hice fue instalar todo el paquete de idioma, sin especificar uno en particular: '/ usr/share/locales/install-language-pack es' –

+0

Hay un error tipográfico:" setlocale "en lugar de" etlocale "en la primera línea del código de ejemplo. No pude editarlo, lo siento! –

+0

Gracias @NEXTLEVELSHIT! Ya se corrigió – alexscmar

0

tal vez usted no ha instalado la configuración regional por lo que si estás en ubuntu puedes consultar la lista con "locale -a" sin los cuotes, y verificar los idiomas disponibles en el archivo/usr/share/i18n/SUPPORTED y generar la configuración regional requerida con "locale-gen de_DE"

espero que este trabajo para usted.

0

Tenga en cuenta que probablemente necesite reiniciar deamons httpd y php-fpm después de generar nuevas configuraciones regionales en Linux.

Sin reinicio php (7.2) no pudo encontrarlos, incluso cuando figuran en la configuración regional -a.

Esperamos que se puede salvar a alguien algún tiempo :)

1
locale -a 
locale-gen nb_NO.UTF-8 
locale-gen nb_NO 
update-locale 
locale -a 
restart php5-fpm 
+0

Intente proporcionar una explicación de lo que hace una solución que está publicando. –

Cuestiones relacionadas