Informacje podstawowe
Testowałem to rozwiązanie na Fedorze 21 z GNOME Shell 3.14.4, ale wierzę, że można go zastosować również do innych wersji.
Pierwszą rzeczą do zrozumienia jest to, że środowisko pulpitu GNOME zastępuje ogólnosystemowe definicje ustawień regionalnych, a zatem nie ma na nie wpływu /etc/locale.conf
. Ponadto mogą istnieć aplikacje, które mają własną konfigurację ustawień regionalnych i w ogóle nie używają ustawień systemowych ani GNOME. W tym przewodniku opiszę sposób dostosowania ustawień regionalnych do twoich potrzeb i GNOME, a system będzie spójny z perspektywy ustawień regionalnych.
Sprawdzanie bieżącego statusu ustawień regionalnych
Ustawienia systemowe
Z Przewodnika administratora systemu Fedora 21 :
Systemowe ustawienia regionalne są przechowywane w /etc/locale.conf
pliku, który odczytywany jest przy wczesnym uruchomieniu przez demona systemd . Ustawienia regionalne skonfigurowane w /etc/locale.conf
są dziedziczone przez każdą usługę lub użytkownika, chyba że poszczególne programy lub poszczególni użytkownicy nadpisują je.
Aby zobaczyć aktualny stan ustawień regionalnych, możemy uruchomić:
$ 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
Ustawienia GNOME
$ gsettings get org.gnome.system.locale region
'en_US.UTF-8'
GNOME ma tylko jedno ustawienie. Po krótkim spojrzeniu na kod źródłowy gnome-control-centre wydaje się, że po set_localed_locale()
wywołaniu funkcji ustawia wszystkie następujące kategorie (LC_TIME, LC_NUMERIC, LC_MONETARY, LC_MEASUREMENT, LC_PAPER) na te same ustawienia regionalne zdefiniowane w org.gnome.system.locale region
.
Mieszanie różnych ustawień narodowych wydaje się niemożliwe bez tworzenia własnych ustawień narodowych, ale na szczęście nie jest to bardzo skomplikowane zadanie.
Tworzenie niestandardowych ustawień regionalnych
Myślę, że najłatwiejszym sposobem wyjaśnienia jest przykład. W moim konkretnym przypadku chciałem mieć niestandardowe ustawienia narodowe, oparte głównie na hebrajskim ( he_IL ), ale z LC_NAME, LC_MESSAGES z en_US i LC_TIME (ze zmodyfikowanymi first_weekday
i first_workday
) z en_GB .
Pobieranie plików definicji ustawień regionalnych
Powinieneś mieć pomysł, które lokalizacje chcesz mieszać. Najpierw musimy zlokalizować powiązane pliki definicji, które można znaleźć w /usr/share/i18n/locales/
. Wracając do mojego przykładu, potrzebowałem: he_IL , en_US i en_GB . Skonfigurowałem folder roboczy w domu i skopiowałem do niego wymagane pliki:
$ cd /usr/share/i18n/locales
$ mkdir -v ~/custom-locale ; cp -v he_IL en_US en_GB ~/custom-locale/
Tworzenie nowego pliku definicji
Postanowiłem nazwać moją lokalizację hc_IL i wziąłem he_IL jako podstawę. Poniższe wiersze tworzą nowy plik hc_IL
z zawartością zi he_IL
po drodze zamieniają wszystkie wystąpienia ciągu he_IL wewnątrz pliku na hc_IL .
$ cd ~/custom-locale/
$ sed 's/he_IL/hc_IL/g' he_IL > hc_IL
Modyfikowanie nowego pliku definicji
Teraz możemy dostosować nowe ustawienia regionalne do naszych potrzeb. Otwórz nowo utworzony plik za ~/custom-locale/hc_IL
pomocą swojego ulubionego edytora tekstu. Używam vim (ma właściwe podświetlanie składni dla plików definicji ustawień regionalnych):
$ vim ~/custom-locale/hc_IL
Dla tych, którzy nie wybrali jeszcze swojego ulubionego edytora i vim nie jest filiżanką herbaty, mogą skorzystać z gedit :)
$ gedit ~/custom-locale/hc_IL
Struktura pliku nie jest bardzo skomplikowana. Zasadniczo jest on zbudowany z sekcji. Ze strony podręcznika regionalnego (5) :
Definicja ustawień regionalnych ma jedną część dla każdej kategorii ustawień narodowych. Każdą część można skopiować z innego istniejącego ustawienia narodowego lub zdefiniować od zera. Jeśli kategoria powinna zostać skopiowana, jedynym prawidłowym słowem kluczowym w definicji jest kopia, a następnie nazwa ustawień regionalnych, które należy skopiować.
Pojęcie kopii jest bardzo przydatne. Oszczędza czas, a wynikowy plik jest przejrzysty i zwięzły. Na przykład zamiast kopiować całe sekcje, możesz mieć:
LC_MESSAGES
copy "en_US"
END LC_MESSAGES
Dostęp do pełnej dokumentacji pliku definicji ustawień regionalnych można uzyskać poprzez:
$ man 5 locale
Chociaż jeśli chcesz po prostu stworzyć niestandardowe ustawienia narodowe, które są mieszanką istniejących, nie musisz rozumieć każdego szczegółu.
W moim przypadku zmodyfikowałem następujące kategorie i słowa kluczowe:
LC_IDENTIFICATION
title "Custom Hebrew locale"
source "mydomain.ws"
address "http:////www.mydomain.ws"
contact ""
email "admin@mydomain.ws"
tel ""
fax ""
language "Hebrew"
territory "Israel"
revision "1.0"
date "2015-04-21"
Uwaga: Wszystkie wiersze „ category .. ” w sekcji LC_IDENTIFICATION zostały zmodyfikowane podczas tworzenia pliku przy użyciu sed
. Nie musimy ich już dotykać.
LC_TIME
Skopiowałem całą sekcję z en_GB i zmodyfikowałem tylko wiersze wskazujące pierwszy dzień tygodnia i pierwszy dzień pracy:
first_weekday 1
first_workday 1
Pozostałe kategorie, które pozostawiłem, takie, jakie są, lub zastąpiłem ich treścią dyrektywą dotyczącą kopiowania, jak w:
LC_NAME
copy "en_US"
END LC_NAME
To wszystko, plik definicji jest gotowy. Nie zapomnij zapisać pliku :)
Skompiluj i skopiuj nowe ustawienia regionalne
Kompilacja nowych ustawień regionalnych odbywa się za pomocą następującego polecenia jako root lub sudo . Zamień na hc_IL
swoje ustawienia regionalne:
$ sudo localedef -c -v -i hc_IL -f UTF-8 hc_IL.UTF-8
Jeśli kompilacja się powiedzie, skompilowane dane regionalne zostaną dodane do pliku archiwum /usr/lib/locale/locale-archive
.
Skopiuj nowy plik definicji ustawień regionalnych do katalogu definicji ustawień regionalnych. Zamień na hc_IL
swoje ustawienia regionalne:
$ sudo cp -v hc_IL /usr/share/i18n/locales/
Aktywowanie nowego ustawienia narodowego
W tym kroku chcemy skonfigurować system i GNOME do korzystania z nowych ustawień regionalnych.
Ustawienia systemowe
Edytuj /etc/locale.conf
plik jako root i ustaw każdą linię zaczynającą się LC_
na nowe ustawienia regionalne. Na przykład:
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
Ustawienia GNOME
Aby aktywować nowe ustawienia narodowe w GNOME, uruchom następującą komendę. Zamień na hc_IL
swoje ustawienia regionalne:
$ gsettings set org.gnome.system.locale region "hc_IL.utf8"
Sprawdzanie poprawności nowych ustawień
Ostatnim krokiem jest sprawdzenie, czy wszystko działa zgodnie z oczekiwaniami. Aby ponownie załadować wszystkie ustawienia, najłatwiejszy dla mnie był restart.
- Sprawdź sekcję „Sprawdzanie bieżącego stanu ustawień regionalnych”, aby sprawdzić, czy konfiguracja systemu jest poprawna.
Użyj powłoki GNOME i aplikacji zależnych od ustawień regionalnych (graficznych i konsolowych) i sprawdź, czy zachowują się zgodnie z oczekiwaniami w nowych ustawieniach regionalnych. Np. Jeśli dostosowałeś LC_TIME, możesz uruchomić date
polecenie, aby sprawdzić format daty:
$ date +%x
21/04/15
Uwaga: Wszystko zostało przetestowane na Fedorze 21 z GNOME 3.14. Inne dystrybucje systemu Linux mogą wymagać dodatkowych lub różnych kroków.
Proszę o komentarz, jeśli znajdziesz jakieś problemy z instrukcjami.