Benutzer-Werkzeuge

Webseiten-Werkzeuge


sammlung:localectl

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/localectl.txt · Zuletzt geändert: von 127.0.0.1