Что именно делает «локаль» в Mac OS X и / или других ОС Unix / Linux - PullRequest
5 голосов
/ 30 августа 2011

Чтение

man locale

Я полагаю, что эта локаль отображает информацию о "текущей локали" или список всех доступных локалей.

Кроме того, работает

$ locale

дает ...

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

Однако ни человек, ни управляющий им на самом деле не проливают свет на то, что делают эти переменные среды. Я хотел бы спросить конкретно, для чего эти переменные среды необходимы или используются? (скажем, например, в контексте программного обеспечения, работающего в этой ОС unix / linux, в котором есть эти переменные среды)

Вопрос: Что это значит в контексте программного обеспечения, работающего в ОС с этими локалями?

Ответы [ 2 ]

3 голосов
/ 30 августа 2011

О, справочная страница (man 1 locale):

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.

Возможно, вы искали man-страницу 'locale' в неправильном разделе? Это стандартные разделы (см. 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]

Итак, для двоичного файла locale вы должны посмотреть в разделе 1: man 1 locale. Чтобы полностью ответить на ваш вопрос, приведу описание в справочной странице локали:

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.

Образцы (LC_TIME и 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 - для сортировки информации по языку. LC_MONETARY - формат валюты (США: $1.24, Европа: 1.24 €)

1 голос
/ 30 августа 2011

Язык управляет многими вещами, такими как:

  1. Используемое кодирование (т.е. en_US.UTF-8 или другое классическое кодирование)
  2. Файлы перевода для использования в стандартной библиотеке или других приложениях.
  3. Интернационализация (форматирование чисел, валюта, даты)

Языковой стандарт C является языком «по умолчанию». Как правило, желательно быть более конкретным и работать как нечто, включенное в Linux с поддержкой UTF-8.

...