Узнайте язык по умолчанию в Linux - PullRequest
0 голосов
/ 26 июля 2010

Есть ли способ узнать язык по умолчанию для системы Linux из C? Есть ли для этого POSIX API? Например. Я хотел бы иметь строку в удобочитаемом для человека формате, то есть "немецкий" или "немецкий" в немецкой системе, "французский" или "французский" во французской системе и т. Д. Есть ли что-то подобное?

Спасибо!

Ответы [ 3 ]

1 голос
/ 26 июля 2010

Обычно переменная окружения LANG содержит эту информацию в формате, подобном "de_DE.UTF-8".

Вы можете получить ее, используя функцию getenv.

EDIT:

Для более сложной интернационализации вы можете изучить gettext .

0 голосов
/ 12 мая 2017

Чтобы определить текущий язык в системе, вы можете посмотреть следующие переменные среды (отсортированные по приоритету в порядке убывания):

  1. LANGUAGE
  2. LC_ALL
  3. LC_MESSAGES, LC_NUMERIC, LC_TIME, LC_COLLATE и другие
  4. LANG

Каждая из этих переменных имеет специальный формат:ll_CC, где первые две буквы означают код языка, вторые две буквы означают код страны.Также может быть указана дополнительная информация, такая как кодировка или вариант.Как исключение, первая переменная может содержать список кодов языка, и она работает только при включенном механизме локализации.

По крайней мере, gettext , самая популярная среда перевода в Unix-подобных ОС, руководствуется настоящими правилами.
https://gnu.org/software/gettext/manual/html_node/gettext_2.html#Locale-Environment-Variables

0 голосов
/ 26 июля 2010

Посмотрите на getenv и setenv относительно переменных среды LANGUAGE и т. Д.

Это связано с локалями.

http://billposer.org/Software/NumbersAndLocales.html

Обязательно обратите внимание на различные значения всех переменных.Есть переопределения через LC_ALL и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...