
Я создал свои собственные locale
s и поместил их в /etc/locale.conf
, которые успешно вступают в силу, если я вхожу в виртуальную консоль (Ctrl+Alt+F2). В моем сеансе Gnome3 эти переменные не установлены. Для терминальных приложений я мог бы просто поместить их в , .bashrc
но это не поможет мне с графическими приложениями, такими как Thunderbird и Pidgin.
Я постарался следовать этим советам:Настройки локали при инициализации оболочки не используются сеансом GNOMEи даже сымитировал ошибку вЛокаль - ArchWikiпутем создания .pam_environment
файла, но locale
s все еще те, которые установлены Gnome3. В настройках Gnome есть диалог конфигурации, но он позволяет задать только очень ограниченный набор предопределенных locale
комбинаций и нет возможности их настроить.
Соответствующие файлы в моем домашнем каталоге:
user@localhost:~$ ls -lah .dmrc .pam_environment .session .xsession .xsessionrc
lrwxrwxrwx. 1 user user 16 12. Jun 08:57 .dmrc -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 11. Jun 20:23 .pam_environment -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 12. Jun 09:09 .session -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 12. Jun 09:07 .xsession -> /etc/locale.conf
lrwxrwxrwx. 1 user user 9 13. Jun 11:22 .xsessionrc -> .xsession
-rw-rw-r--. 1 user user 66 13. Jun 11:13 .profile
user@localhost:~$ cat .profile
source /etc/locale.conf
Содержание /etc/locale.conf
:
LANG="en_US.utf8"
LC_TIME="de_MY.utf8" # NB: de_MY
LC_MONETARY="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"
Кто-нибудь знает, как настроить пользовательские locale
s в Gnome3?
решение1
Исходная информация
Я протестировал это решение на Fedora 21 с GNOME Shell 3.14.4, но полагаю, что его можно применить и к другим версиям.
Первое, что нужно понять, это то, что среда рабочего стола GNOME переопределяет общесистемные определения локали и, таким образом, не зависит от /etc/locale.conf
. Кроме того, могут быть приложения, которые имеют собственную конфигурацию локали и вообще не используют системные или GNOME-настройки. В этом руководстве я опишу способ настройки локали в соответствии с вашими потребностями, а GNOME и система будут согласованы с точки зрения локали.
Проверка текущего статуса локали
Системные настройки
ОтРуководство системного администратора Fedora 21:
Настройки локали для всей системы хранятся в
/etc/locale.conf
файле, который считывается при ранней загрузкесистемдdaemon. Настройки локали, настроенные в,/etc/locale.conf
наследуются каждой службой или пользователем, если только отдельные программы или отдельные пользователи не переопределяют их.
Чтобы увидеть текущий статус локали, мы можем выполнить:
$ localectl status
System Locale: LANG=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
VC Keymap: us
X11 Layout: us
Настройки GNOME
$ gsettings get org.gnome.system.locale region
'en_US.UTF-8'
В GNOME есть только одна настройка. Если взглянуть на нее кратко,исходный код gnome-control-centerпохоже, что при set_localed_locale()
вызове функции она устанавливает все следующие категории (LC_TIME, LC_NUMERIC, LC_MONETARY, LC_MEASUREMENT, LC_PAPER) в одну и ту же локаль, определенную в org.gnome.system.locale region
.
Смешивание различных настроек локали кажется невозможным без создания собственной локали, но, к счастью, это не очень сложная задача.
Создание пользовательского региона
Я думаю, что проще всего объяснить на примере. В моем конкретном случае я хотел иметь собственную локаль, в первую очередь основанную на иврите (он_ИЛ) но с LC_NAME, LC_MESSAGES изru_USи LC_TIME (с измененными first_weekday
и first_workday
) изru_GB.
Получение файлов определения локали
У вас должно быть представление о том, какие локали вы хотите смешать. Сначала нам нужно найти соответствующие файлы определений, которые можно найти в /usr/share/i18n/locales/
. Возвращаясь к моему примеру, мне нужно было следующее:он_ИЛ,ru_USиru_GB. Я создал рабочую папку у себя дома и скопировал в нее необходимые файлы:
$ cd /usr/share/i18n/locales
$ mkdir -v ~/custom-locale ; cp -v he_IL en_US en_GB ~/custom-locale/
Создание нового файла определения
Я решил позвонить в свой районhc_ILи взялон_ИЛкак основу. Следующие строки создают новый файл hc_IL
с содержимым из he_IL
и по пути заменяют все вхождения строкион_ИЛвнутри файла сhc_IL.
$ cd ~/custom-locale/
$ sed 's/he_IL/hc_IL/g' he_IL > hc_IL
Изменение нового файла определения
Теперь мы можем настроить новую локаль под наши нужды. Откройте только что созданный файл ~/custom-locale/hc_IL
в вашем любимом текстовом редакторе. Я используювим(имеет правильную подсветку синтаксиса для файлов определения локали):
$ vim ~/custom-locale/hc_IL
Для тех, кто еще не выбрал своего любимого редактора ивимэто не их чашка чая, можно использоватьgedit:)
$ gedit ~/custom-locale/hc_IL
Структура файла не очень сложная. По сути, она состоит из секций. Излокаль(5)страницы руководства:
Определение локали имеет одну часть для каждой категории локали. Каждая часть может быть скопирована из другой существующей локали или может быть определена с нуля. Если категория должна быть скопирована, единственное допустимое ключевое слово в определении —копияза которым следует название локали, которую следует скопировать.
Понятиекопияочень полезно. Это экономит время, а полученный файл получается понятным и кратким. Например, вместо того, чтобы копировать целые разделы, вы можете иметь:
LC_MESSAGES
copy "en_US"
END LC_MESSAGES
Полную документацию по файлу определения локали можно получить по адресу:
$ man 5 locale
Хотя, если вы просто хотите создать собственную локаль, представляющую собой смесь существующих, вам не обязательно понимать все детали.
В моем случае я изменил следующие категории и ключевые слова:
ИДЕНТИФИКАЦИЯ_LC
title "Custom Hebrew locale" source "mydomain.ws" address "http:////www.mydomain.ws" contact "" email "[email protected]" tel "" fax "" language "Hebrew" territory "Israel" revision "1.0" date "2015-04-21"
Примечание:Все "категория.." линии вИДЕНТИФИКАЦИЯ_LCраздел был изменен во время создания файла с помощью
sed
. Поэтому нам больше не нужно их трогать.LC_TIME
Я скопировал весь раздел изru_GBи изменил только строки, указывающие первый день недели и первый рабочий день:
first_weekday 1 first_workday 1
Остальные категории я оставил как есть или заменил их содержимое накопиядиректива, как в:
LC_NAME copy "en_US" END LC_NAME
Вот и все, файл определения готов. Не забудьте сохранить файл :)
Скомпилируйте и скопируйте новую локаль
Компиляция новой локали выполняется с помощью следующей команды:кореньили используясудо. Замените hc_IL
на свою локаль:
$ sudo localedef -c -v -i hc_IL -f UTF-8 hc_IL.UTF-8
Если компиляция прошла успешно, скомпилированные данные локали добавляются в файл архива /usr/lib/locale/locale-archive
.
Скопируйте новый файл определения локали в каталог определений локали. Замените hc_IL
на свою локаль:
$ sudo cp -v hc_IL /usr/share/i18n/locales/
Активация нового региона
На этом этапе мы хотим настроить систему и GNOME для использования новой локали.
Системные настройки
Отредактируйте /etc/locale.conf
файл каккореньи установите каждую строку, которая начинается с , LC_
на вашу новую локаль. Например:
LANG=en_US.UTF-8
LC_NUMERIC=hc_IL.utf8
LC_TIME=hc_IL.utf8
LC_MONETARY=hc_IL.utf8
LC_PAPER=hc_IL.utf8
LC_MEASUREMENT=hc_IL.utf8
Настройки GNOME
Чтобы активировать новую локаль в GNOME, выполните следующую команду. Замените hc_IL
на свою локаль:
$ gsettings set org.gnome.system.locale region "hc_IL.utf8"
Проверка новых настроек
Последний шаг — проверить, что все работает как и ожидалось. Для перезагрузки всех настроек самым простым для меня было перезагрузить компьютер.
- Чтобы проверить правильность конфигурации системы, обратитесь к разделу «Проверка текущего статуса локали».
Используйте GNOME Shell и зависимые от локали приложения (графические и консольные) и проверьте, что они ведут себя ожидаемым образом с новой локалью. Например, если вы настроили LC_TIME, вы можете выполнить команду
date
для проверки формата даты:$ date +%x 21/04/15
Примечание:Все было протестировано на Fedora 21 с GNOME 3.14. Другие дистрибутивы Linux могут потребовать дополнительных или других шагов.
Если вы обнаружите какие-либо проблемы с инструкциями, пожалуйста, оставьте комментарий.