====== localectl - Locale und Tastaturlayout verwalten ======
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.
===== Voraussetzungen =====
* Zugriff auf die Linux-Kommandozeile
* SystemD-basiertes System (Ubuntu 15.04+, Debian 8+, CentOS 7+)
* Root-Rechte zum Ändern der Locale-Einstellungen
===== Grundlegende Syntax =====
localectl [OPTIONEN] [BEFEHL]
===== Was ist Locale? =====
Locale definiert regionale und sprachliche Einstellungen:
* **Sprache** der Systemmeldungen
* **Zeichensatz** (UTF-8, ISO-8859-1, etc.)
* **Datums- und Zeitformat**
* **Zahlenformat** (Dezimaltrennzeichen, Tausendertrennzeichen)
* **Währungsformat**
* **Sortierreihenfolge**
===== Häufige Anwendungsfälle =====
==== Aktuelle Einstellungen anzeigen ====
# 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
==== Verfügbare Locales anzeigen ====
# 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 setzen =====
==== Locale ändern ====
# 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
==== Locale-Variablen ====
^ 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 |
===== Tastaturlayout verwalten =====
==== Verfügbare Layouts anzeigen ====
# 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
==== Konsolen-Tastatur setzen (Virtual Console) ====
# Deutsches Layout für Konsole
sudo localectl set-keymap de
# Schweizer Layout
sudo localectl set-keymap ch
# US-Layout
sudo localectl set-keymap us
==== X11-Tastatur setzen (Grafische Oberfläche) ====
# 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]
===== Praktische Beispiele =====
==== Komplett-Konfiguration für Deutschland ====
# 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
==== Server-Setup für Englisch mit deutscher Tastatur ====
# 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
==== Mehrsprachiges System ====
# 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-Pakete installieren =====
==== Debian/Ubuntu ====
# 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
==== RHEL/CentOS/Fedora ====
# Locale-Paket installieren
sudo dnf install glibc-langpack-de
sudo dnf install glibc-langpack-en
# Oder alle Sprachen
sudo dnf install glibc-all-langpacks
===== Konfigurationsdateien =====
==== /etc/locale.conf ====
Systemweite Locale-Einstellungen:
# Inhalt anzeigen
cat /etc/locale.conf
# Beispiel-Inhalt:
LANG=de_DE.UTF-8
LC_TIME=de_DE.UTF-8
==== /etc/vconsole.conf ====
Konsolen-Tastaturlayout:
# Inhalt anzeigen
cat /etc/vconsole.conf
# Beispiel:
KEYMAP=de
FONT=eurlatgr
==== /etc/default/keyboard ====
X11-Tastaturlayout (Debian/Ubuntu):
# Inhalt anzeigen
cat /etc/default/keyboard
# Beispiel:
XKBMODEL="pc105"
XKBLAYOUT="de"
XKBVARIANT="nodeadkeys"
XKBOPTIONS=""
===== Benutzerspezifische Locale =====
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
===== Locale testen =====
# 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
===== Häufige Locale-Probleme beheben =====
==== Fehlende Locale-Warnung ====
# 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
==== UTF-8 Zeichen werden nicht angezeigt ====
# 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
==== Tastaturlayout funktioniert nicht ====
# 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
===== Integration mit SSH =====
# 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
===== Wichtige Hinweise =====
* Locale-Änderungen erfordern **neue Login-Session** (oder ''source /etc/default/locale'')
* UTF-8 ist der empfohlene Zeichensatz für moderne Systeme
* Tastaturlayout-Änderungen wirken sofort
* SSH-Verbindungen können Client-Locale übertragen
* Nicht alle Locales sind standardmäßig installiert
===== Fehlerbehebung =====
==== Locale ist nicht verfügbar ====
# 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
==== Falsche Sprache nach SSH-Login ====
# 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_*
===== Siehe auch =====
* [[sammlung:hostnamectl|hostnamectl - Hostname verwalten]]
* [[sammlung:timedatectl|timedatectl - Zeit und Datum verwalten]]
* [[sammlung:systemd|SystemD Grundlagen]]
* [[sammlung:wichtige_konfigurationsdateien|Wichtige Konfigurationsdateien]]
{{tag>linux systemd locale sprache tastatur i18n l10n}}