> Faqs > Carbon locale funciona en ordenador de desarrollo pero no en el servidor remoto Linux

Carbon locale funciona en ordenador de desarrollo pero no en el servidor remoto Linux

Uso la librería PHP Carbon para el trabajo con fechas.

El método formatLocalized me funciona perfectamente en mi máquina local, en el servidor de desarrollo de mi ordenador. Sin embargo, cuando lo uso en el servidor remoto (Linux) no me hace bien la traducción de los meses y días de la semana.

Esta es mi configuración y código para asignar el valor del locale, que como digo funciona perfectamente en mi máquina local:

setlocale(LC_ALL,'es_ES.UTF-8');
setlocale(LC_TIME,'es_ES');
\Carbon\Carbon::setLocale('es_ES');

Luego, hago así las conversiones de fechas:

$carbon_date = new Carbon($date);
$carbon_date->formatLocalized('%d de %B de %Y');

Como funciona bien en local y no funciona en remoto, me temo que es algo de configuración del servidor, ya sea con Ubunto, quizás PHP, o Laravel el última instancia, que es el framework que uso. A alguien se le ocurre alguna solución?

Respuestas

Primero puedes comprobar los locales que están disponibles en Carbon con un código como este:

echo implode(', ', \Carbon\Carbon::getAvailableLocales()); 

Asegúrate que las cadenas que uses para definir tus locales están entre las posibilidades que apunta la librería Carbon.

Luego comprueba qué locales están instalados en tu sistema operativo Linux. Esto lo consigues con un comando de consola:

locale -a

En nuestro servidor nos aprecen las siguientes opciones de locales instalados:

C C.UTF-8 POSIX en_US.utf8 es_ES es_ES.iso88591 es_ES.utf8 spanish

Si quieres instalar otros locales, que estés usando desde PHP pero que no estén listados entre los soportados por tu sistema Linux, simplemente corre el comando:

sudo locale-gen <nuevo_locale>

Alternativas son:

sudo locale-gen es_ES
sudo locale-gen es_ES.UTF-8

En el momento que tengas instalados los locales correspondientes, recuerda que tienes que reiniciar los servicios. Quizás tengas que reiniciar Apache, Nginx, o incluso el propio motor de PHP, con los correspondientes comandos de consola.

Miguel Angel
3145 140 209 17
Estupendo, funciona, lo acabo de probar. No se os olvide reiniciar el servidor web al terminar el proceso.