Вы можете проверить, какие локали генерируются и настраиваются в вашей системе, используя команду locale:
- locale ... перечислить текущую конфигурацию локали
- locale -a ... перечисляет все локали, которые были сгенерированы в вашей системе
- locale -a -v ... перечислить все локали и показать полезную дополнительную информацию (например, имена каталогов, которые содержат файлы данных с информацией о локалях)
Последняя команда из приведенного выше показывает, что все сгенерированные локали находятся в /usr/lib/locale/
, и вы можете удалить любой из них, если он не нужен. Каждый пакет информации о локали представляет собой каталог, содержащий текстовые файлы и другие каталоги.
Все локали, которые вы хотите, чтобы ваша система поддерживала, перечислены в текстовых файлах в /var/lib/locales/supported.d/
. Эти файлы имеют два столбца, языковой тег и карту символов.
Я хочу, чтобы моя система знала только американский-английский, поэтому у меня есть только один файл с именем en, который содержит только одну строку:
en_US UTF-8
Сообщения об ошибках
Если при выдаче команды локали отображаются сообщения об ошибках, например:
locale: Cannot set LC_ALL to default locale: No such file or directory
убедитесь, что файл /etc/default/locale
существует и имеет правильное содержимое, например:
LANG="en_US"
LANGUAGE="en_US:en"
Избавьтесь от ненужных языковых данных - шаг за шагом
Теперь мы знаем все необходимые детали, чтобы начать очистку информации о локали нашей системы:
- Отредактируйте файл (ы) локали в
/var/lib/locales/supported.d/
и удалите все ненужные локали (по одной локали на строку)
- Создание и редактирование
/etc/default/locale
(см. Пример выше)
- Удалить все сгенерированные данные локали:
rm -rfv /usr/lib/locale/*
- Повторно сгенерируйте новые локали:
locale-gen
Это все! Перезагрузите компьютер, чтобы изменения вступили в силу. Затем выполните один или несколько приведенных выше примеров команды locale, чтобы убедиться, что результат соответствует ожидаемому.
~# locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
~#
~# locale -a -v
locale: en_US.utf8 directory: /usr/lib/locale/en_US.utf8
-------------------------------------------------------------------------------
title | English locale for the USA
source | Free Software Foundation, Inc.
address | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
email | bug-glibc-locales@gnu.org
language | English
territory | USA
revision | 1.0
date | 2000-06-24
codeset | UTF-8
Существует пакет для Debian / Ubuntu , который может позаботиться о удалении локалей и локалях связанных файлов (например , страницы человека): localepurge
. Вы можете установить / запустить его, выпуская:
sudo apt-get install localepurge
После установки вы должны запустить это:
dpkg --configure localepurge
чтобы убедиться, что ваши языковые настройки установлены правильно.
чтобы запустить его вручную после установки (хотя на самом деле это не нужно, так как он должен запускаться после каждого dpkg
запуска автоматически), вы можете просто сделать:
sudo localepurge
Тем не менее, прочитайте man-страницу перед использованием. Если вы можете сделать свои вещи без этого, вероятно, безопаснее отпустить.
с этого форума
ссылка:
1. LocaleConf в официальной документации
2. Справочная страница по Linux
3. Локаль в википедии
4. Человек по локальной сети