En PHP la función date
devuelve una fecha en inglés, sin posibilidad de traducirla a otro idioma. Por ejemplo para obtener el nombre del mes actual:
echo date('F'); // devuelve "August"
Para obtener una fecha en otro idioma se debe usar strftime
, que tiene una sintaxis parecida a date
pero que consulta el idioma local del sistema que esté activo y traduce la fecha.
echo strftime('%B'); // devuelve "august" traducido al idioma local
¿Cuál es el idioma local? Idiomas en un sistema Linux
Un sistema Linux puede tener instalados varios idiomas, preparados para que las aplicaciones como PHP los activen cuando los necesiten. Para saber qué idiomas hay instalados se puede usar la siguiente orden en la línea de comandos:
$ locale -a C C.UTF-8 es_ES.utf8
Para instalar un nuevo idioma, se puede usar dpkg-reconfigure como root:
dpkg-reconfigure locales
Cambiar el idioma local activo en PHP
Con la orden setlocale
se puede cambiar el idioma activo en PHP.
setlocale(LC_TIME, 'es_ES','es_ES.utf8');
El primer parámetro indica la categoría de elementos para la que se quiere cambiar el idioma: LC_MONETARY
para la moneda, LC_NUMERIC
para los separadores de miles y decimales en números, LC_TIME
para fechas… Los siguientes parámetros (tantos como se quiera), indican los códigos de idiomas a los que se intentará cambiar. Para que la orden funcione el código de idioma tiene que estar escrito tal y como lo está en el sistema, y como los códigos pueden variar de un sistema a otro conviene cubrirse las espaldas suministrando a setlocale
varias opciones.
Por último, setlocale puede cambia el idioma para todo el entorno PHP. Si hace falta volver al idioma por defecto del sistema:
setlocale(LC_TIME,'C.utf8', 'C');
Bola extra. strftime
devuelve el nombre del mes en minúsculas. Para obtener el mes con la primera letra mayúscula:
echo ucfirst( strftime( '%B' ) );