23.1.1. Visión general
23.1.2. Comportamiento
23.1.3. Problemas

Lugar El soporte se refiere a una aplicación que respeta las preferencias culturales en cuanto a alfabetos, clasificación, formato de números, etc. PostgreSQL utiliza las instalaciones de configuración regional ISO C y POSIX estándar proporcionadas por el sistema operativo del servidor. Para obtener información adicional, consulte la documentación de su sistema.

23.1.1. Visión general

El soporte de configuración regional se inicializa automáticamente cuando se crea un clúster de base de datos utilizando initdb. initdb Inicializará el clúster de base de datos con la configuración regional de su entorno de ejecución de forma predeterminada, por lo que si su sistema ya está configurado para usar la configuración regional que desea en su clúster de base de datos, no hay nada más que deba hacer. Si desea utilizar una configuración regional diferente (o no está seguro de en qué configuración regional está configurado su sistema), puede indicar initdb exactamente qué configuración regional usar especificando el --locale opción. Por ejemplo:

initdb --locale=sv_SE

Este ejemplo para sistemas Unix establece la configuración regional en sueco (sv) como se habla en Suecia (SE). Otras posibilidades pueden incluir en_US (Inglés de EE. UU.) Y fr_CA (Franco canadiense). Si se puede usar más de un juego de caracteres para una configuración regional, las especificaciones pueden tomar la forma language_territory.codeset. Por ejemplo, fr_BE.UTF-8 representa el idioma francés (fr) como se habla en Bélgica (BE), con una codificación de juego de caracteres UTF-8.

Las configuraciones regionales están disponibles en su sistema y bajo qué nombres depende de lo que proporcionó el proveedor del sistema operativo y lo que se instaló. En la mayoría de los sistemas Unix, el comando locale -a proporcionará una lista de las configuraciones regionales disponibles. Windows usa nombres de configuración regional más detallados, como German_Germany o Swedish_Sweden.1252, pero los principios son los mismos.

De vez en cuando es útil mezclar reglas de varias configuraciones regionales, por ejemplo, usar reglas de intercalación en inglés pero mensajes en español. Para respaldar eso, existe un conjunto de subcategorías de configuración regional que controlan solo ciertos aspectos de las reglas de localización:

LC_COLLATE Orden de clasificación de cadenas
LC_CTYPE Clasificación de caracteres (¿Qué es una letra? ¿Su equivalente en mayúsculas?)
LC_MESSAGES Idioma de los mensajes
LC_MONETARY Formato de importes de moneda
LC_NUMERIC Formateo de números
LC_TIME Formateo de fechas y horas

Los nombres de las categorías se traducen en nombres de initdb opciones para anular la elección de la configuración regional para una categoría específica. Por ejemplo, para establecer la configuración regional en francés canadiense, pero usar las reglas de EE. UU. Para formatear la moneda, use initdb --locale=fr_CA --lc-monetary=en_US.

Si desea que el sistema se comporte como si no tuviera soporte de configuración regional, use el nombre de configuración regional especial C, o equivalente POSIX.

Algunas categorías de configuración regional deben tener sus valores fijos cuando se crea la base de datos. Puede usar diferentes configuraciones para diferentes bases de datos, pero una vez que se crea una base de datos, ya no puede cambiarlas para esa base de datos. LC_COLLATE y LC_CTYPE son estas categorías. Afectan el orden de clasificación de los índices, por lo que deben mantenerse fijos o los índices de las columnas de texto se dañarían. (Pero puede aliviar esta restricción mediante intercalaciones, como se explica en la Sección 23.2.) Los valores predeterminados para estas categorías se determinan cuando initdb se ejecuta, y esos valores se utilizan cuando se crean nuevas bases de datos, a menos que se especifique lo contrario en el CREATE DATABASE mando.

Las otras categorías de configuración regional se pueden cambiar cuando se desee estableciendo los parámetros de configuración del servidor que tienen el mismo nombre que las categorías de configuración regional (consulte la Sección 19.11.2 para obtener más detalles). Los valores elegidos por initdb en realidad solo se escriben en el archivo de configuración postgresql.conf para servir como valores predeterminados cuando se inicia el servidor. Si elimina estas asignaciones de postgresql.conf entonces el servidor heredará la configuración de su entorno de ejecución.

Tenga en cuenta que el comportamiento de la configuración regional del servidor está determinado por las variables de entorno vistas por el servidor, no por el entorno de ningún cliente. Por lo tanto, tenga cuidado de configurar la configuración regional correcta antes de iniciar el servidor. Una consecuencia de esto es que si el cliente y el servidor se configuran en diferentes configuraciones regionales, los mensajes pueden aparecer en diferentes idiomas dependiendo de dónde se originaron.

Nota

Cuando hablamos de heredar la configuración regional del entorno de ejecución, esto significa lo siguiente en la mayoría de los sistemas operativos: Para una categoría de configuración regional determinada, digamos la intercalación, se consultan las siguientes variables de entorno en este orden hasta que se encuentra que se establece una: LC_ALL, LC_COLLATE (o la variable correspondiente a la categoría respectiva), LANG. Si no se establece ninguna de estas variables de entorno, la configuración regional se establece de forma predeterminada en C.

Algunas bibliotecas de localización de mensajes también miran la variable de entorno LANGUAGE que anula todas las demás configuraciones regionales con el fin de establecer el idioma de los mensajes. En caso de duda, consulte la documentación de su sistema operativo, en particular la documentación sobre gettext.

Para permitir que los mensajes se traduzcan al idioma preferido del usuario, se debe haber seleccionado NLS en el momento de la compilación (configure --enable-nls). El resto de la compatibilidad con la configuración regional se integra automáticamente.

23.1.2. Comportamiento

La configuración regional influye en las siguientes funciones de SQL:

  • Ordenar en las consultas usando ORDER BY o los operadores de comparación estándar en datos textuales

  • los upper, lower, y initcap funciones

  • Operadores de coincidencia de patrones (LIKE, SIMILAR TOy expresiones regulares de estilo POSIX); Las configuraciones regionales afectan tanto la coincidencia que no distingue entre mayúsculas y minúsculas como la clasificación de caracteres mediante expresiones regulares de clase de carácter

  • los to_char familia de funciones

  • La capacidad de utilizar índices con LIKE cláusulas

El inconveniente de utilizar configuraciones regionales distintas de C o POSIX en PostgreSQL es su impacto en el rendimiento. Ralentiza el manejo de caracteres y evita que los índices ordinarios sean utilizados por LIKE. Por esta razón, use las configuraciones regionales solo si realmente las necesita.

Como solución alternativa para permitir que PostgreSQL utilice índices con LIKE cláusulas en una configuración regional que no sea C, existen varias clases de operadores personalizados. Estos permiten la creación de un índice que realiza una comparación estricta carácter por carácter, ignorando las reglas de comparación de la configuración regional. Consulte la Sección 11.10 para obtener más información. Otro enfoque es crear índices utilizando la C colación, como se discutió en la Sección 23.2.

23.1.3. Problemas

Si la compatibilidad con la configuración regional no funciona de acuerdo con la explicación anterior, verifique que la compatibilidad con la configuración regional en su sistema operativo esté configurada correctamente. Para verificar qué configuraciones regionales están instaladas en su sistema, puede usar el comando locale -a si su sistema operativo lo proporciona.

Verifique que PostgreSQL realmente esté usando la configuración regional que cree que está. los LC_COLLATE y LC_CTYPE La configuración se determina cuando se crea una base de datos y no se puede cambiar excepto creando una nueva base de datos. Otras configuraciones regionales, incluidas LC_MESSAGES y LC_MONETARY están determinados inicialmente por el entorno en el que se inicia el servidor, pero se pueden cambiar sobre la marcha. Puede comprobar la configuración regional activa mediante el SHOW mando.

El directorio src/test/locale en la distribución fuente contiene un conjunto de pruebas para el soporte de locale de PostgreSQL.

Las aplicaciones cliente que manejan errores del lado del servidor analizando el texto del mensaje de error obviamente tendrán problemas cuando los mensajes del servidor estén en un idioma diferente. Se recomienda a los autores de dichas aplicaciones que utilicen el esquema de código de error.

El mantenimiento de catálogos de traducciones de mensajes requiere los esfuerzos continuos de muchos voluntarios que desean que PostgreSQL hable bien su idioma preferido. Si los mensajes en su idioma no están disponibles actualmente o no están completamente traducidos, se agradecería su ayuda. Si desea ayudar, consulte Capítulo 54 o escriba a la lista de correo de los desarrolladores.

Anterior Hasta próximo
Capítulo 23. Localización Hogar 23.2. Soporte de colación