Настройка переменных локализации в Linux
Команда locale запущенная без ключей выведет настройки текущей локали.
# locale -a | grep ru ru_RU ru_RU.iso88595 ru_RU.koi8r ru_RU.utf8 russian ru_UA ru_UA.koi8u ru_UA.utf8
Подробный вывод с ключом -v
d# locale -a -v locale: en_US.utf8 archive: /usr/lib/locale/locale-archive ------------------------------------------------------------------------------- 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 locale: ru_RU.utf8 archive: /usr/lib/locale/locale-archive ------------------------------------------------------------------------------- title | Russian locale for Russia source | RAP address | Sankt Jorgens Alle 8, DK-1615 Kobenhavn V, Danmark email | bug-glibc-locales@gnu.org language | Russian territory | Russia revision | 1.0 date | 2000-06-29 codeset | UTF-8
Если в ответ получаем отличное от ru_RU.UTF — перенастраиваем.
# locale-gen ru_RU ru_RU.UTF-8 ru_RU ru_RU.UTF-8 # localedef -c -i ru_RU -f UTF-8 ru_RU.UTF-8 # dpkg-reconfigure locales # update-locale LANG=ru_RU.UTF-8
Red Hat / CentOS
Включение системных средств локализации в Red Hat Linux (а, следовательно, и в других дистрибутивах, основанных на Red Hat) осуществляется из файла /etc/profile.d/lang.sh. Как известно, при старте любого shell-а сначала выполняется /etc/profile. В Red Hat в /etc/profile прописаны команды, благодаря которым на исполнение вызываются также все файлы /etc/profile.d/*.sh
Значения переменных локализации в файлах lang.sh задаются путем вызова на выполнение файла /etc/sysconfig/i18n.
# nano /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
Правда, это верно только для случая, когда вы имеете права суперпользователя root. Но даже если вы простой пользователь Linux-системы и не можете редактировать файл /etc/sysconfig/i18n, то вы все же можете включить локализацию для себя, но несколько иным способом. А именно, поместите в свой файл $HOME/.profile (или в любой файл, который исполняется в процессе логирования пользователя: $HOME/.Xclients, $HOME/.xinitrc или другой) следующие строки: /etc/profile или $HOME/.bash_profile
#export LANG=ru_UA.utf8 #export LINGUAS=ru_RU:en #export LC_ALL="ru_UA.utf8" export LANG="en_US.UTF-8" export LC_ALL="en_US.UTF-8" export LC_CTYPE="en_US.UTF-8"
Чтобы изменения принялись нужно перезайти в консоль или выполнить команду source для файла в котором вы прописали export
$ source ~/.profile
Debian
Чтобы использовать UTF-8 в локали нужно установить LC_CTYPE (или, опционально, переменную LANG, если вы хотите заодно изменить и системный язык).
Проверяем текущие значения переменных и установленные локали
# echo $LC_CTYPE # echo $LANG # locale -a C POSIX
Доусстановливаем нужные локали
# dpkg-reconfigure locales en_US.UTF-8 ru_UA.UTF-8
В файлы Основы BASH скрипты, циклы, горячие клавиши.bashrc и profile добавляем экспорт переменной LANG
# nano /etc/bash.bashrc # nano /etc/profile export LANG=en_US.UTF-8
Ubuntu 12.04 — удаление локалей и локализаций
Удаление лишних локалей в Ubuntu. Делал такие телодвижения:):
В файле locale-gen посмотрел пути в которых хранятся файлы локалей.
nano /usr/sbin/locale-gen . SUPPORTED=/var/lib/locales/supported.d LOCALES=/usr/share/i18n/locales STATEDIR=/var/lib/belocs .
В директории supported.d отредактировал файлы, оставил только нужные локали
# ls -l /var/lib/locales/supported.d итого 12 -rw-r--r-- 1 root root 18 Май 30 22:09 en -rw-r--r-- 1 root root 36 Май 1 21:53 local -rw-r--r-- 1 root root 36 Апр 18 11:31 ru
Поставил и настроил утилиту localepurge, она служит для удаления файлов локализаций, а не локалей
# aptitude install localepurge # nano /etc/locale.nopurge MANDELETE DONTBOTHERNEWLOCALE SHOWFREEDSPACE #QUICKNDIRTYCALC VERBOSE en_US.UTF-8 ru_RU.UTF-8 ru_UA.UTF-8
Запустил localepurge -v. Файлов много удалило, но вывод locale -a не изменился.
Перегенируем локали с ключом purge
~# locale-gen --purge Generating locales. en_US.UTF-8. done ru_RU.UTF-8. done ru_UA.UTF-8. done Generation complete.
Проверяем. Теперь все правильно остались только нужные мне локали
~# locale -a C C.UTF-8 en_US.utf8 POSIX ru_RU.utf8 ru_UA.utf8
Ubuntu добавление локали
Какие локали поддерживает Ubuntu? Находим нужную нам, например en_US.UTF-8 UTF-8
less /usr/share/i18n/SUPPORTED
Добавим нужную нам локаль в список для создания локалей
echo 'en_US.UTF-8 UTF-8' >> /var/lib/locales/supported.d/local; echo 'uk_UA.UTF-8 UTF-8' >> /var/lib/locales/supported.d/local;
Пересоздадим локали
dpkg-reconfigure locales
Настройка русской локали в Linux
Чтобы изменить установленную по умолчанию локализацию в системе на русскую, необходимо выполнить несколько не сложных шагов.
Подготовка к настройке
- Подключаемся к VPS по SSH с правами root.
- Проверяем, доступна ли русская локаль в системе и её корректное название:
locale -a | grep ru
- В результате, при наличии локали, будет получен примерно следующий вывод:
[root@vps ~]# locale -a | grep ru ru_RU ru_RU.iso88595 ru_RU.koi8r ru_RU.utf8 ru_UA ru_UA.koi8u ru_UA.utf8 russian
- В нашем случае, интересует вариант ru_RU.utf8. Его мы и будем использовать далее. Поэтому скопируйте это значение в блокнот для дальнейшей вставки.
Настройка локали в CentOS, Fedora
- Создадим файл i18n, в котором затем сохраним параметры новой локали:
nano /etc/sysconfig/i18n
- В открывшемся редакторе вносим следующую информацию:
LANG="ru_RU.utf8" SUPPORTED="ru_RU.utf8:ru_RU:ru"
- Сохраняем изменения сочетанием клавиш CTRL+O и затем Enter.
- На этом всё, локаль изменена и теперь необходимо переподключиться в консоль, чтобы увидеть изменения. Если вы использовали VNC или другое удаленное подключение к рабочему столу, то рекомендуется и в нём произвести переподключение для применения изменений.
Настройка локали в Debian, Ubuntu
Если в шаге подготовки команда locale -a | grep ru дала пустой результат, значит русская локаль отсутствует в системе и её можно установить следующими способами:
Способ 1:
- Перенастраиваем пакет locales командой:
dpkg-reconfigure locales
- В появившейся форме ищем локаль ru_RU.UTF-8 и отмечаем её нажатием пробела. Затем нажимаем Enter и переходим к следующему шагу.
- Следующий шаг – выбор локали по умолчанию. Выбераем русскую локаль из списка и нажмаем Enter.
- В результате будет завершена перенастройка локали и теперь необходимо только выполнить повторное подключение к консоли и к удаленному рабочему столу (если таковое используется).
Способ 2:
- Устанавливаем языковой пакет:
apt-get install language-pack-ru
- Открываем текстовым редактором файл /etc/default/locale:
nano /etc/default/locale
- Заменяем его содержимое на:
LANGUAGE=ru_RU:ru LANG=ru_RU.UTF-8
- Сохраняем изменения сочетанием клавиш CTRL+O и затем Enter.
- Выходим из консоли, а также закрываем соединение с удаленным рабочим столом (если такое соединение было) и подключаемся к этим сервисам повторно.
- На этом настройка завершена.
Изменить, добавить locale в Linux
Locale – это локализация Linux которая определяет в какой кодировке пользователь видит всё в терминале.
1. Посмотреть текущую locale
В текущем примере текущая locale = en_US.UTF-8 где
en — Код языка по стандарту ISO 639
US — Код страны по стандарту ISO 3166
UTF-8 – Кодировка текста
# locale
LANG=en_US.UTF-8
LANGUAGE=
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
# locale -a
C
C.UTF-8
en_US.utf8
POSIX
ru_RU
ru_RU.cp1251
2. Добавить \ установить новую locale
Список всех доступных для установки locale (в других версиях Linux, файл может быть другим, не locale.gen).
# cat /etc/locale.gen
Если в списке нет подходящей locale то возможно она просто не установлена и ее нужно установить
# apt-get -y install language-pack-ru
Locale можно устанавливать через
# locale-gen ru_RU.cp1251
# update-locale
Но удобнее делать с это с помощью псевдографической утилиты (в других версиях Linux могут быть свои средства). В этой утилите можно так же изменить locale которая используется по умолчанию в системе.
# dpkg-reconfigure locales
Как поменять язык Linux без переустановки системы
При установке Linux можно выбрать язык системы (локаль) — и в дальнейшем этот язык будет использоваться в программах и окнах Linux (за исключением тех приложений, для которых не сделан перевод).
Если вы решили поменять язык Linux, то вам не нужно переустанавливать её — достаточно выполнить простые действия.
Чтобы узнать текущие языковые настройки, наберите команду:
locale
Чтобы посмотреть доступные языковые настройки (локали), воспользуйтесь командой
locale -a
Для изменения языка системы, нужно, чтобы локаль, на которую вы хотите поменять язык, уже присутствовала в системе. Если её нет, то нужно добавить.
Чтобы добавить новую локаль, откройте файл /etc/locale.gen:
sudo gedit /etc/locale.gen
И раскомментируйте там строки с желаемыми новыми локалями. Затем выполните команду:
sudo locale-gen
Теперь новые языковые настройки (новую локаль) вы можете видеть в списке доступных локалей.
locale -a
Смена локали для текущий сессии
Чтобы поменять язык и кодировку для текущей сессии, вам нужно установить переменную окружения LANG, это можно сделать командой export:
# Установить английскую локаль export LANG=en_US.UTF-8 # Установить русскую локаль export LANG=ru_RU.UTF-8 # Установить французскую локаль export LANG=fr_FR.UTF-8
Если в вашей системе это не сработало, то замените переменную LANG на переменную LANGUAGE, например:
export LANGUAGE=en_US.UTF-8
Изменение языковых настроек насовсем для одного пользователя
Добавьте строку с экспортом желаемой локали (например, export LANG=en_US.utf-8) в файл ~/.bashrc
Изменения начнут действовать после выхода/входа и будут действовать после каждой перезагрузки.
Изменение системной локали по умолчанию
Есть два альтернативных метода смены локали.
Первый — это запустить следующую команду (укажите нужную вам локаль):
sudo localectl set-locale LANG=en_US.UTF-8
sudo localectl set-locale LANG=ru_RU.UTF-8
Второй метод — прописать язык в файле /etc/locale.conf, откройте его:
sudo gedit /etc/locale.conf
и добавьте туда строку с нужной локалью:
LANG=en_US.utf-8
После перезагрузки система предложит изменить имена папок на локализованные:
Чтобы это окно не появлялось при каждой загрузке системы, поставьте галочку «Не задавать больше этот вопрос».
Чтобы вновь открыть это окно, выполните в командной строке:
echo 'en_US' > ~/.config/user-dirs.locale xdg-user-dirs-gtk-update