localectl ist ein systemd-Tool zur Verwaltung von System-Locale (Sprach- und Regioneneinstellungen) und Tastaturlayout. Es ermöglicht das Anzeigen und Setzen von Spracheinstellungen, Zeichensätzen und Tastaturbelegungen für Konsole und X11.
localectl [OPTIONEN] [BEFEHL]
Locale definiert regionale und sprachliche Einstellungen:
# Locale-Einstellungen anzeigen localectl # Nur Locale-Status localectl status
Ausgabe-Beispiel:
System Locale: LANG=de_DE.UTF-8
VC Keymap: de
X11 Layout: de
X11 Model: pc105
# Alle installierten Locales localectl list-locales # Locales filtern localectl list-locales | grep de_ localectl list-locales | grep en_
Häufige Locales:
de_DE.UTF-8 - Deutsch (Deutschland)en_US.UTF-8 - Englisch (USA)en_GB.UTF-8 - Englisch (Großbritannien)fr_FR.UTF-8 - Französisch (Frankreich)# System-Locale auf Deutsch setzen sudo localectl set-locale LANG=de_DE.UTF-8 # Auf Englisch (US) setzen sudo localectl set-locale LANG=en_US.UTF-8 # Mehrere Locale-Variablen setzen sudo localectl set-locale LANG=de_DE.UTF-8 \ LC_TIME=de_DE.UTF-8 \ LC_NUMERIC=en_US.UTF-8
| Variable | Bedeutung | Beispiel |
|---|---|---|
| LANG | Standard-Locale für alle Kategorien | de_DE.UTF-8 |
| LC_TIME | Datums- und Zeitformat | de_DE.UTF-8 |
| LC_NUMERIC | Zahlenformat | en_US.UTF-8 |
| LC_MONETARY | Währungsformat | de_DE.UTF-8 |
| LC_MESSAGES | Systemmeldungen | en_US.UTF-8 |
| LC_COLLATE | Sortierreihenfolge | de_DE.UTF-8 |
| LC_CTYPE | Zeichenklassifizierung | de_DE.UTF-8 |
# Alle verfügbaren Tastaturlayouts localectl list-keymaps # Deutsche Layouts filtern localectl list-keymaps | grep de # X11-Layouts localectl list-x11-keymap-layouts # X11-Varianten für ein Layout localectl list-x11-keymap-variants de
# Deutsches Layout für Konsole sudo localectl set-keymap de # Schweizer Layout sudo localectl set-keymap ch # US-Layout sudo localectl set-keymap us
# Deutsches Layout für X11 sudo localectl set-x11-keymap de # Mit Variante (z.B. Deadkeys) sudo localectl set-x11-keymap de pc105 nodeadkeys # Schweizer Layout mit Variante sudo localectl set-x11-keymap ch pc105 # US-International sudo localectl set-x11-keymap us pc105 intl
Syntax:
localectl set-x11-keymap LAYOUT [MODEL] [VARIANT] [OPTIONS]
# Locale auf Deutsch setzen sudo localectl set-locale LANG=de_DE.UTF-8 # Deutsches Tastaturlayout (Konsole) sudo localectl set-keymap de # Deutsches Tastaturlayout (X11) sudo localectl set-x11-keymap de pc105 nodeadkeys # Prüfen localectl status
# Systemmeldungen auf Englisch sudo localectl set-locale LANG=en_US.UTF-8 # Aber deutsche Tastatur sudo localectl set-keymap de sudo localectl set-x11-keymap de
# Hauptsprache Deutsch, aber englische Zahlenformate sudo localectl set-locale \ LANG=de_DE.UTF-8 \ LC_NUMERIC=en_US.UTF-8 \ LC_MONETARY=de_DE.UTF-8 \ LC_TIME=de_DE.UTF-8
# Locale-Paket installieren sudo apt update sudo apt install locales # Locales generieren sudo dpkg-reconfigure locales # Oder manuell: sudo locale-gen de_DE.UTF-8 sudo locale-gen en_US.UTF-8 # Locale-Cache aktualisieren sudo update-locale
# Locale-Paket installieren sudo dnf install glibc-langpack-de sudo dnf install glibc-langpack-en # Oder alle Sprachen sudo dnf install glibc-all-langpacks
Systemweite Locale-Einstellungen:
# Inhalt anzeigen cat /etc/locale.conf # Beispiel-Inhalt: LANG=de_DE.UTF-8 LC_TIME=de_DE.UTF-8
Konsolen-Tastaturlayout:
# Inhalt anzeigen cat /etc/vconsole.conf # Beispiel: KEYMAP=de FONT=eurlatgr
X11-Tastaturlayout (Debian/Ubuntu):
# Inhalt anzeigen cat /etc/default/keyboard # Beispiel: XKBMODEL="pc105" XKBLAYOUT="de" XKBVARIANT="nodeadkeys" XKBOPTIONS=""
Benutzer können eigene Locale-Einstellungen überschreiben:
# In ~/.bashrc oder ~/.profile export LANG=en_US.UTF-8 export LC_TIME=de_DE.UTF-8 # Oder temporär in aktueller Shell export LANG=en_US.UTF-8
# Aktuelle Locale-Einstellungen anzeigen locale # Alle Locale-Variablen locale -a # Datum im aktuellen Format date # Mit anderem Format testen LC_TIME=en_US.UTF-8 date LC_TIME=de_DE.UTF-8 date # Zahlenformat testen LC_NUMERIC=de_DE.UTF-8 printf "%'.2f\n" 1234567.89 LC_NUMERIC=en_US.UTF-8 printf "%'.2f\n" 1234567.89
# Warnung: "locale: Cannot set LC_ALL to default locale" # Lösung: Locale installieren und generieren sudo locale-gen de_DE.UTF-8 sudo update-locale LANG=de_DE.UTF-8 # Neu anmelden oder neu laden source /etc/default/locale
# Prüfen ob UTF-8 aktiv ist locale | grep UTF-8 # Auf UTF-8 umstellen sudo localectl set-locale LANG=de_DE.UTF-8 # Terminal-Font prüfen (bei SSH) echo $TERM
# Konsole: Manuell testen sudo loadkeys de # X11: Temporär testen setxkbmap de # Permanent setzen sudo localectl set-keymap de sudo localectl set-x11-keymap de
# SSH sendet Locale-Variablen # In /etc/ssh/sshd_config: AcceptEnv LANG LC_* # Client-seitig in ~/.ssh/config: SendEnv LANG LC_* # Oder SSH mit bestimmter Locale starten ssh -o "SendEnv LANG" user@server
source /etc/default/locale)# Prüfen ob Locale installiert ist locale -a | grep de_DE # Falls nicht, generieren sudo locale-gen de_DE.UTF-8 sudo dpkg-reconfigure locales
# Server akzeptiert Client-Locale nicht # In /etc/ssh/sshd_config deaktivieren: # AcceptEnv LANG LC_* # Oder Client sendet keine Locale: # In ~/.ssh/config aktivieren: SendEnv LANG LC_*