2011-08-30 9 views
5

lectura¿Qué significa exactamente "locale" lo hacen en Mac OS X y/u otro/Linux OS Unix

man locale 

Calculo que esa configuración regional incluye información sobre la "localización actual" o una lista de todas las localizaciones disponibles .

Además, corriendo

$ locale 

da ...

LANG= 
LC_COLLATE="C" 
LC_CTYPE="C" 
LC_MESSAGES="C" 
LC_MONETARY="C" 
LC_NUMERIC="C" 
LC_TIME="C" 
LC_ALL= 

Sin embargo, ni el hombre ni ejecutarlo en realidad arroja una luz sobre lo que hacen estas variables de entorno. Me gustaría preguntar específicamente ¿para qué se necesitan o para qué se usan estas variables de entorno? (digamos por ejemplo en el contexto de un software que se ejecuta en este sistema operativo Unix/Linux que tiene estas variables de entorno)

La Pregunta: ¿Qué quiere decir que en el contexto de un software que se ejecuta en el sistema operativo con estos lugares?

+2

La configuración regional surgió como un sistema para especificar programáticamente el idioma, las diferencias de puntuación y la codificación de caracteres en el espacio del intérprete de órdenes. Es UNIX puro y es anterior a Mac OS X. En Mac, el shell extrae la configuración regional del sistema configurada por el asistente de configuración y visible y modificable en el panel de preferencias internacionales – bmike

+0

bmike. Parece que no puedo encontrar el interfaz de usuario en la aplicación de preferencias del sistema.Actualmente estoy en Mac 10.6.8 –

+0

Se llama lenguaje y texto en Lion. Simplemente abra la aplicación de preferencias del sistema y escriba el idioma en el campo de búsqueda superior derecho. – bmike

Respuesta

3

Oh, la página del manual (man 1 locale) hace:

LC_CTYPE 
Character classification and case conversion. 

LC_COLLATE 
Collation order. 

LC_TIME 
Date and time formats. 

LC_NUMERIC 
Non-monetary numeric formats. 

LC_MONETARY 
Monetary formats. 

LC_MESSAGES 
Formats of informative and diagnostic messages and interactive responses. 

Tal vez, usted tenía un vistazo por la página de manual 'local' en la sección equivocada? Estas son las secciones estándar (ver man man)

0 Header files (usually found in /usr/include) 
1 Executable programs or shell commands 
2 System calls (functions provided by the kernel) 
3 Library calls (functions within program libraries) 
4 Special files (usually found in /dev) 
5 File formats and conventions eg /etc/passwd 
6 Games 
7 Miscellaneous (including macro packages and conven- 
    tions), e.g. man(7), groff(7) 
8 System administration commands (usually only for root) 
9 Kernel routines [Non standard] 

así, para el locale binario, usted tiene que mirar en la sección 1: man 1 locale. Para responder plenamente a su pregunta, cito la parte descriptiva de la página del manual de configuración regional:

DESCRIPTION 
    The locale utility shall write information about the current locale 
    environment, or all public locales, to the standard output. For the 
    purposes of this section, a public locale is one provided by the imple- 
    mentation that is accessible to the application. 

    When locale is invoked without any arguments, it shall summarize the 
    current locale environment for each locale category as determined by 
    the settings of the environment variables defined in the Base Defini- 
    tions volume of IEEE Std 1003.1-2001, Chapter 7, Locale. 

    When invoked with operands, it shall write values that have been 
    assigned to the keywords in the locale categories, as follows: 

    * Specifying a keyword name shall select the named keyword and the 
     category containing that keyword. 

    * Specifying a category name shall select the named category and all 
     keywords in that category. 

Muestras (LC_TIME y LC_MESSAGES):

$ export LC_TIME='fr_FR.UTF-8' #french time 
$ date 
mar. août 30 18:41:07 CEST 2011 
$ export LC_TIME='de_DE.UTF-8' #german time 
$ date 
Di 30. Aug 18:41:12 CEST 2011 #english time 
$ export LC_TIME='en_US.UTF-8' 
$ date 
Tue Aug 30 18:41:17 CEST 2011 
$ rm NON-EXIST 
rm: cannot remove `NON-EXIST': No such file or directory 
$ export LC_TIME='de_DE.UTF-8' #german time, but english MESSAGES 
$ rm NON-EXIST 
rm: cannot remove `NON-EXIST': No such file or directory 
$ export LC_MESSAGES='de_DE.UTF-8' #german messages 
$ rm NON-EXIST 
rm: cannot remove `NON-EXIST': Datei oder Verzeichnis nicht gefunden 

LC_COLLATE es para la clasificación de la información de acuerdo a un idioma. LC_MONETARY es el formato de moneda (US: $1.24, europa: 1.24 €)

+0

¿Qué significa eso en el contexto de un software que se ejecuta en el sistema operativo con estas configuraciones regionales? –

+1

He añadido algunas muestras ... –

+0

¡Gracias, Johannes! –

1

Locale gobierna un montón de cosas, tales como:

  1. codificación en uso (es decir, en_US.UTF-8, o alguna otra codificación clásica)
  2. Archivos de traducción para usar en la biblioteca estándar u otras aplicaciones.
  3. Internacionalización (número de formato, moneda, fechas)

La configuración regional C es la localización "por defecto". En general, es aconsejable ser más específico y ejecutarse como algo habilitado para UTF-8 en Linux.

+0

¿Qué significa eso en el contexto de un software que se ejecuta en el sistema operativo con estas configuraciones regionales? –

+1

Exactamente todo lo anterior. La configuración regional indica cómo deben funcionar el programa y la biblioteca estándar en presencia de diferentes configuraciones de internacionalización y localización. Por ejemplo, con una configuración regional, se supone que las fechas se ordenan correctamente para esa configuración regional: M/D/Y, Y/M/D, etc., días de la semana, si el separador decimal es '.' o', 'o algo de lo contrario, si los mensajes deben ser en francés, inglés o chino, qué codificación de caracteres está en uso. –

+0

Ambas respuestas se refieren al contexto. De hecho, LOCAL es __part__ del contexto. –