# setlocale

(PHP 4, PHP 5, PHP 7, PHP 8)

setlocale — Establecer la información del localismo

### Descripción

setlocale(int `$category`, string `$locale`, string `$...` = ?): string
setlocale(int `$category`, array `$locale`): string

Establece la información del localismo.

### Parámetros

`category`

  `category` es una constante con nombre que especifica la categoría de las funciones afectadas por el localismo:

  - `LC_ALL` para establecer todas las siguientes
  - `LC_COLLATE` para la comparación de cadenas; véase strcoll()
  - `LC_CTYPE` para la clasificación y conversión de caracteres, por ejemplo strtoupper()
  - `LC_MONETARY` para localeconv()
  - `LC_NUMERIC` para el separador decimal (véase también localeconv())
  - `LC_TIME` para el formato de fecha y hora con strftime()
  - `LC_MESSAGES` para las respuestas del sistema (disponible si PHP fue compilado con `libintl`)
`locale`

  Si `locale` es `null` o el string vacío `""`, los nombres de los localismos se establecerán a partir de los valores de las variables de entorno con los mismos nombres que las categorías anteriores, o desde "LANG".

  Si `locale` es `"0"`, el localismo no se ve afectado, solamente devuelve la configuración actual.

  Si `locale` es un array o le siguen parámetros adicionales, cada elemento del array o parámetro se intenta establecer como nuevo localismo hasta que se tenga éxito. Esto es útil si un localismo se conoce con diferentes nombres en diferentes sistemas, o para proporcionar un respaldo para un localismo posiblemente no disponible.

`...`

  (String opcional o array de parámetros para probarlos como localismos hasta que se tenga éxito.)

> Nota:

> En Windows, setlocale(LC_ALL, '') establece los nombres del localismo desde la configuración regional o del lenguaje del sistema (accesible por medio del Panel de Control).

### Valores devueltos

Devuelve el nuevo localismo actual o `false` si la funcionalidad del localismo no está implementada en la plataforma, el localismo especificado no existe, o el nombre de la categoría no es válido.

Un nombre de categoría no válido también produce un mensaje de advertencia. Se pueden encontrar los nombres de las categorías/localismos en la » RFC 1766 y en la » ISO 639. Diferentes sistemas tienen diferentes nomenclaturas para los localismos.

> Nota:

> El valor de retorno de setlocale() depende del sistema donde se está ejecutando PHP. Devuelve exactamente lo que la función `setlocale` del sistema devuelve.

### Historial de cambios

Versión | Descripción
--- | ---
7.0.0 | Se ha eliminado el soporte para el parámetro `category` pasado como string. En esta versión, solamente se pueden utilizar las constantes `LC_*`.
5.3.0 | Está función ahora emite un aviso `E_DEPRECATED` si se pasa un string al parámetro `category` en lugar de una de las constantes `LC_*`.

### Ejemplos

Ejemplo #1 Ejemplos de setlocale()

`<?php
/* Establecer el localismo al holandés */
setlocale(LC_ALL, 'nl_NL');
/* Muestra: vrijdag 22 december 1978 */
echo strftime("%A %e %B %Y", mktime(0, 0, 0, 12, 22, 1978));
/* Probar diferentes nombres posibles de localismos para el alemán */
$loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
echo "El localismo preferido para el alemán en este sistema es '$loc_de'";
?>`

Ejemplo #2 Ejemplos para Windows de setlocale()

`<?php
/* Establecer el localismo al holandés */
setlocale(LC_ALL, 'nld_nld');
/* Muestra: vrijdag 22 december 1978 */
echo strftime("%A %d %B %Y", mktime(0, 0, 0, 12, 22, 1978));
/* Probar diferentes nombres posibles de localismos para el alemán */
$loc_de = setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
echo "El localismo preferido para el alemán en este sistema es '$loc_de'";
?>`

### Notas

Advertencia

La información del localismo se mantiene por proceso, no por hilo. Si se está ejecutanto PHP en una API de servidor multihilo como IIS, HHVM o Apache sobre Windows, se pueden experimentar cambios repentinos en la configuración local mientras se esté ejecutando un script, aunque el propio script nunca llame a setlocale(). Esto ocurre debido a que otros scripts ejecutándose en diferentes hilos de un mismo proceso, al mismo tiempo, cambian el localismo de todo el proceso con setlocale().

Sugerencia

Los usuarios de Windows encontrarán información útil sobre string de `locale` en el sitio web MSDN de Microsoft. Los string de los idiomas soportados se pueden encontrar en la » documentación de string de idiomas y los string de paises/regiones en la » documentación de string de países/regiones.