установка системной локали на C… какая подходящая кодировка?

Вопрос или проблема

Я использую Arch и хочу установить локаль всей моей системы на C (и только C). C не упомянута в /etc/locale.gen (и только en_US.UTF-8 UTF-8 не закомментирована), но C находится в /usr/share/i18n/locales/.

Я выполнил команду localectl set-locale C и вышел/вошел в систему, команда locale показывает C для всего — отлично.

Мои вопросы:

  • Нужно ли мне закомментировать строку en_US.UTF-8 UTF-8 в файле locale.gen и выполнить команду locale-gen, чтобы удалить другие нежелательные остатки локалей из системы?

  • Перед выполнением команды locale-gen следует ли добавить C в файл locale.gen, и если да, то какой <charmap> является стандартным для него?

Я заглядываю в каталог /usr/share/i18n/charmaps/, но не вижу там ничего похожего на C.gz. Верно ли использовать UTF-8.gz, ANSI_X3.110-1983.gz или какой-либо из ISO-*/ISO_*?

Я выполняю команду localectl list-locales и вижу:

C.UTF-8
en_US.UTF-8

Означает ли это, что моя локаль не полностью и только C, и у меня есть нежелательные остатки других?

Ответ или решение

Настройка системной локали на C в Arch Linux – важная задача, учитывая, что локаль C играет особую роль в компьютерных системах. Локаль C (иногда называемая "POSIX") предоставляет минимальный набор языковых параметров и предназначена для стандартизированной работы приложений, особенно если требуется избегать локальных особенностей и настроек, таких как форматы даты и времени, сортировка строк и пр.

Теория

Локаль C традиционно используется как "базовая" или "стандартная" локаль в Unix-подобных системах. Она реализует упрощенный и независимый от языка подход, который часто используется для обеспечения стабильной работы программного обеспечения и тестирования. В этой локали имеется минимальный набор символьных данных, что подходит для сценариев, где требуется гарантированная предсказуемость поведения системных и пользовательских приложений.

Локаль C сама по себе не требует указания charmap, поскольку она не ориентирована на поддержку ОК чаров, не выходящих за пределы ASCII-символов. Это также объясняет, почему C не требует специальных настроек в /etc/locale.gen.

Пример

Ваш сценарий описывает систему Arch, для которой вы хотите установить локаль C. Вы правильно отметили, что локаль C не представлена в /etc/locale.gen, так как она считается встроенной в системы и не требует явной генерации. Локаль C доступна по умолчанию, и может быть установлена командой localectl set-locale C.

Вы задали довольно резонный вопрос относительно остальных комментариев в файле locale.gen и возможного наличия следов других локалей, таких как en_US.UTF-8. Поскольку локаль C минималистична, вы не обязаны комментировать другие записи в locale.gen, если система корректно использует C по умолчанию, как это подтверждается командой locale, показывающей C для всех настроек.

Применение

  1. Комментарий en_US.UTF-8 UTF-8: Теоретически, вам не нужно комментировать строку с en_US.UTF-8 в файле locale.gen, если вы не используете locale-gen для генерации новых локалей. Если ваша система уже настроена на использование C и работает должным образом, эта строка более не имеет значения, за исключением случаев, если вы хотите освободить место на диске, занимаемое сгенерированными локальными данными.

  2. Добавление C в locale.gen: Добавление C в файл locale.gen технически не оправдано, поскольку C не требует генерации файла локали как таковой. Она встроена на уровне ядра системы.

  3. Charmap для C: Как локаль основанная на ASCII, C не использует расширенные чарты, такие как UTF-8 или ISO-*. Ваши поиски чармапы для C не принесут результатов, поскольку C по природе своей не поддерживает многобайтовые символы, а ограничивается стандартными кодировками ASCII.

  4. Вывод localectl list-locales: Появление C.UTF-8 в списке поддерживаемых локалей говорит о том, что ваша система поддерживает не только стандарт C, но и напряженно расширенный дилект C.UTF-8. Тем не менее, если locale команда указывает, что все настройки локали находятся в C, система должным образом использует C.

В итоге, ваша система настроена на локаль C, и если команда locale возвращает C для каждой настройки, это свидетельствует о том, что ваша система работает в режиме C. Вы можете игнорировать любое оставшееся упоминание о других локалях как нежелательных остаток без значительных последствий.

Рекомендуется лишь периодически следить за состоянием вашей системы и периодически проверять, поддерживается ли желаемая работа в контексте изменений системного ПО или установок.

Оцените материал
Добавить комментарий

Капча загружается...