Zum Konfigurieren der Ländereinstellungen führe ich zuerst ein sed- Skript aus, mit dem eine neue Kopie der Datei '/etc/locale.gen' erstellt wird, die auf dem Inhalt der Datei '/ usr / share / i18n / SUPPORTED' basiert. Jede Zeile aus der Eingabedatei wird kopiert, aber in einen Kommentar umgewandelt, es sei denn, es handelt sich um einen Eintrag eines UTF-8-Gebietsschemas für eine Sprache, die ich auf meinem System verfügbar machen möchte (z. B. Englisch, Niederländisch, Französisch, und Deutsch):
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
Als Nächstes setze ich das Standardumgebungsgebietsschema in der Debconf-Datenbank, z. B. auf Britisches Englisch :
debconf-set-selections <<< 'locales locales/default_environment_locale select en_GB.UTF-8'
Anschließend entferne ich die vorhandene Datei '/ etc / default / locale' (nur um sicherzustellen, dass der alte Inhalt meine neuen Einstellungen nicht beeinträchtigt) und führe den Befehl dpkg-reconfigure aus , um alle Ländereinstellungen zu generieren, die das sed- Skript ausgewählt hat , und um eine neue '/ etc / default / locale'-Datei mit nur einem Eintrag zu erstellen, um die' LANG'-Variable auf mein ausgewähltes Standardumgebungsgebietsschema zu setzen:
rm --force --verbose /etc/default/locale
dpkg-reconfigure --frontend=noninteractive locales
Abhängig von meinen Anforderungen möchte ich möglicherweise einige Befehle zum Aktualisieren des Gebietsschemas ausführen, um z. B. die Variablen zu überschreiben, die sich auf die Formatierung von Werten auswirken, und sie auf ein anderes Gebietsschema festzulegen (z. B. irisches Englisch ):
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'
(Ich hätte alle diese Parameter bei einem einzigen Aufruf des Befehls update-locale angeben können , aber anscheinend ist die Reihenfolge, in der die Einträge in die Datei '/ etc / default / locale' geschrieben werden, nicht vorhersehbar, wenn ich dies tue bevorzuge, dass sie immer in der gleichen Reihenfolge sind, weshalb ich sie einzeln generiere.)
Und schließlich möchte ich möglicherweise den Befehl update-locale ein letztes Mal ausführen , um die Variable LANGUAGE (dh die Liste der Sprachen, in denen übersetzbare Textnachrichten angezeigt werden sollen) einzurichten:
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"))
...