Aby skonfigurować ustawienia narodowe, najpierw uruchamiam skrypt sed , który utworzy nową kopię pliku „/etc/locale.gen” na podstawie zawartości pliku „/ usr / share / i18n / SUPPORTED”. Każdy wiersz z pliku wejściowego zostanie skopiowany, ale zostanie przekształcony w komentarz, chyba że jest to wpis ustawień regionalnych UTF-8 dla języka, który chcę udostępnić w moim systemie (np. Angielski, holenderski, francuski, i niemiecki):
sed --regexp-extended --expression='
1 {
i\
# This file lists locales that you wish to have built. You can find a list\
# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add\
# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change\
# this file, you need to rerun locale-gen.\
\
}
/^(en|nl|fr|de)(_[[:upper:]]+)?(\.UTF-8)?(@[^[:space:]]+)?[[:space:]]+UTF-8$/! s/^/# /
' /usr/share/i18n/SUPPORTED > /etc/locale.gen
Następnie ustawiam domyślne ustawienia regionalne środowiska w bazie danych debconf, np. Na brytyjski angielski :
debconf-set-selections <<< 'locales locales/default_environment_locale select en_GB.UTF-8'
Następnie usuwam istniejący plik „/ etc / default / locale” (aby upewnić się, że jego stara zawartość nie będzie kolidować z moimi nowymi ustawieniami) i uruchamiam polecenie dpkg-rekonfiguruj, aby wygenerować wszystkie ustawienia narodowe wybrane przez skrypt sed , i aby utworzyć nowy plik „/ etc / default / locale” z samym wpisem, aby ustawić zmienną „LANG” na wybrane przeze mnie domyślne ustawienia regionalne środowiska:
rm --force --verbose /etc/default/locale
dpkg-reconfigure --frontend=noninteractive locales
Następnie, w zależności od moich wymagań, mogę chcieć uruchomić kilka poleceń locale aktualizacji , aby zastąpić np. Zmienne wpływające na formatowanie wartości i ustawić je na inne locale (takie jak irlandzki angielski ):
update-locale LC_NUMERIC='en_IE.UTF-8'
update-locale LC_TIME='en_IE.UTF-8'
update-locale LC_MONETARY='en_IE.UTF-8'
update-locale LC_PAPER='en_IE.UTF-8'
update-locale LC_NAME='en_IE.UTF-8'
update-locale LC_ADDRESS='en_IE.UTF-8'
update-locale LC_TELEPHONE='en_IE.UTF-8'
update-locale LC_MEASUREMENT='en_IE.UTF-8'
update-locale LC_IDENTIFICATION='en_IE.UTF-8'
(Mógłbym określić wszystkie te parametry przy jednym wywołaniu polecenia update-locale , ale najwyraźniej kolejność zapisywania wpisów w pliku „/ etc / default / locale” jest nieprzewidywalna, jeśli to zrobię. wolę, aby zawsze były w tej samej kolejności, dlatego generuję je jeden po drugim).
I na koniec, mogę chcieć uruchomić locale aktualizacji po raz ostatni , aby skonfigurować zmienną LANGUAGE (tj. Listę języków, w których chcę wyświetlać przetłumaczalne wiadomości tekstowe):
update-locale LANGUAGE='en_GB:en_US:en'
File "/usr/share/apt-listchanges/ALChacks.py", line 32, in <module> sys.stderr.write(_("Can't set locale; make sure $LC_* and $LANG are correct!\n"))
...