9.8 Lokalisierung
Unter Lokalisierung versteht man die Anpassung an lokale Gegebenheiten. Im Fall von Linux und BSD ist dies also die Anpassung an deutsche Gegebenheiten wie die Verwendung eines deutschen Tastaturlayouts oder der deutschen Sprache in der Ausgabe von Programmen.
Wenn es um Lokalisierung geht, trifft man oft auf die Abkürzungen i18n oder auch l10n. Sie stehen für internationalization beziehungsweise localization. Bei beiden Wörtern hat man die mittleren Buchstaben ausgelassen und durch ihre jeweilige Anzahl ersetzt.
9.8.1 Die Tastaturbelegung
Nach der Installation einer Linux-Distribution bzw. der Installation eines BSD-Derivats ist das System oftmals nicht auf die deutsche Tastaturbelegung konfiguriert. Dies möchte man in der Regel verändern, was allerdings von Derivat zu Derivat und innerhalb der Linux-Distributionen unterschiedlich gelöst wird.
Die folgenden Informationen beziehen sich auf die Konsole. Die Veränderungen werden nicht für die grafische Oberfläche (X11) übernommen. Wie Sie die deutsche Tastaturbelegung unter X11 verwenden, erfahren Sie in Kapitel 17.
Linux
Normalerweise wird unter Linux das Tastaturlayout bereits während der Installation festgelegt. Sollten Sie es trotzdem einmal ändern wollen, geht dies natürlich auch.
loadkeys
Mit dem Tool loadkeys kann man eine Tastaturbelegung laden. Die einzelnen Tastaturbelegungen befinden sich in der Regel im Verzeichnis
/usr/share/kdb/keymaps. Dort wechselt man in das Unterverzeichnis seiner Plattform (für die Intel-Architektur ist dies i386/) und anschließend in das Unterverzeichnis, dessen Name die Reihenfolge der Buchstaben oben links auf der Tastatur wiedergibt. Für deutsche Tastaturen ist dies qwertz/.
Die einzelnen map.gz-Dateien sind komprimierte Tastaturkodierungen, die nun geladen werden können. Um nun beispielsweise die schwedische – ein schönes Land, finden Sie nicht? – Tastaturbelegung zu laden, lädt man aus dem Verzeichnis qwerty/ die Datei se-lat6.map.gz auf folgende Weise:
# loadkeys se-lat6.map.gz
Listing 9.102 Hey, hey!
Die deutsche Tastaturbelegung zaubert man natürlich aus dem Verzeichnis qwertz/ mit der Datei de-latin1-nodeadkeys.map.gz herbei, wie es auch in der Slackware-Installation im Anhang beschrieben ist.
Für die Ewigkeit
Um die Tastaturbelegung nun permanent zu verwenden, (also auch nach einem Neustart), muss man diese in der entsprechenden Konfigurationsdatei der jeweiligen Distribution eintragen. Da die Distributionen leider viele unterschiedliche Dateien für diesen Zweck verwenden sei das Universalbeispiel von Slackware-Linux genannt, das Sie praktisch überall einsetzen können: Man verwendet ein Shellskript, das nach allen anderen Skripten beim Systemstart ausgeführt wird. Unter Slackware ist dies /etc/rc.d/rc.keymap. Es besteht aus den folgenden Zeilen:
#!/bin/sh # Load the keyboard map. More maps are in # /usr/share/kbd/keymaps. if [ -x /usr/bin/loadkeys ]; then /usr/bin/loadkeys de-latin1-nodeadkeys.map fi
Listing 9.103 Keymap-Startkonfiguration
OpenBSD
Unter OpenBSD steht Ihnen nach der Installation zunächst nur die standardmäßige amerikanische Tastaturbelegung zur Verfügung. Um diese zu verändern, müssen Sie mit dem Programm wsconsctl die Tastaturbelegung auf »de« umstellen.
root# wsconsctl -a | grep keyboard
wsconsctl: Use explicit arg to view keyboard.map.
keyboard.type=pc-xt
keyboard.bell.pitch=400
keyboard.bell.period=100
keyboard.bell.volume=50
keyboard.bell.pitch.default=400
keyboard.bell.period.default=100
keyboard.bell.volume.default=50
keyboard.repeat.del1=400
keyboard.repeat.deln=100
keyboard.repeat.del1.default=400
keyboard.repeat.deln.default=100
keyboard.ledstate=2
keyboard.encoding=de
Listing 9.104 Tastaturbelegung abfragen
root# wsconsctl keyboard.encoding=de
keyboard.encoding -> de
Listing 9.105 Die deutsche Tastaturbelegung einstellen
Um diese Verändung jedoch permanent zu machen, sollte ein entsprechender Eintrag in der /etc/wsconsctl.conf eingebaut werden. Dieser besteht aus der Zeile »keyboard.encoding=de«.
NetBSD
Unter NetBSD geht man ähnlich vor wie unter OpenBSD. Man setzt ebenfalls via wsconsctl eine entsprechende Variable auf den Wert »de«.
# wsconsctl -k -w encoding=de
Listing 9.106 Deutsche Tastaturbelegung unter NetBSD
Um diese Veränderung permanent zu genießen, wird auch diesmal ein Eintrag in einer zugehörigen Konfigurationsdatei abgelegt, der aus einer einzelnen Zeile besteht. Diesmal muss dafür die Zeile »encoding=de« in der /etc/wscons.conf platziert werden.
Es ist darauf zu achten, dass die rc-Variable WSCONS auf »YES« gesetzt ist, damit die wscons.conf verarbeitet wird.
FreeBSD
Unter FreeBSD setzt man den Wert für die (deutsche) Tastaturbelegung mit kbdcontrol bzw. kbdmap.
# kbdcontrol -l german.iso
Listing 9.107 Deutsche Tastaturbelegung unter FreeBSD
Für eine dauerhafte Verwendung des gewünschten Tastaturlayouts muss in der /etc/rc.conf der folgende Eintrag platziert werden:
keymap=german.iso
Listing 9.108 Dauerhafte Veränderungen
9.8.2 Die deutsche Sprache
LANG
Die Lokalisierung umfasst aber nicht nur das Tastenlayout, sondern natürlich auch die deutsche Sprache bei der Ausgabe von Befehlen. Für die Konsole beziehungsweise auch die grafischen Shells unter X11 setzt man dabei am besten die zugehörigen Umgebungsvariablen in der eigenen /.bashrc:
# Die wichtigste Umgebungsvariable für Sprachen:
# Wir wollen eine deutsche Umgebung mit Euro-Zeichen
LANG=de_DE@euro
# Einige Programme nutzen auch die LANGUAGE-Variable
# Hier geben wir unsere Präferenzen an: erst Deutsch,
# und wenn das nicht verfügbar ist, Englisch.
LANGUAGE=de_DE:de:en_GB:en
# Variablen exportieren
export LANG LANGUAGE
Für unsere Freunde aus Österreich wäre der betreffende Wert natürlich de_AT beziehungsweise für die deutschsprachige Schweiz eben de_CH. Ältere Systeme benutzen meist noch die LC_ALL-Variable, um die Systemumgebung zu setzen:
export LC_ALL=de
Listing 9.109 Ältere Systeme
Bei der grafischen Oberfläche X11 ist es wiederum eine Frage des Window-Managers, in welcher Sprache man begrüßt wird. Bei KDE beispielsweise wird man beim ersten Start gefragt, welche Sprache beziehungsweise welche Umgebung man bevorzugt. Hat man die entsprechenden i18n-Pakete installiert, wird einem dabei auch die eigene Sprache angeboten.
9.8.3 Das Einstellen der Uhr
Dass man mit date die Zeit anzeigt und setzt, wissen Sie bereits. Was Ihnen aber noch fehlt, ist das Verständnis der Zusammenhänge rund um die Uhr.
Wie Linux die Zeit versteht
Beim Booten wird die Hardwarezeit des BIOS vom Kernel ausgelesen. In der Regel wird diese in UTC, also der internationalen Standardzeit, laufen. Unter Linux macht dies keine Probleme, da die Uhr nicht von Sommerzeit auf Winterzeit umgestellt werden muss. Wer dagegen manchmal auch Windows startet, hat mit der Hardwarezeit in UTC Probleme und wird daher eher die lokale Zeit speichern.
Epoch
Auf jeden Fall berechnet Linux aus dieser Zeit die Epoch, die Anzahl der Sekunden (in UTC) seit dem 1. Januar 1970. Diesen Wert bezeichnet man auch als die Systemzeit des Kernels. Möchte sich der Benutzer die Zeit anzeigen lassen, wird aus diesem Wert und dem Wissen über die Zeitzone des Benutzers die entsprechende Zeichenkette generiert.
Die Zeitzone einstellen
Die Zeitzone regelt man über die Datei /etc/localtime, die auf die entsprechende Zeitzone unter /usr/share/zoneinfo verlinkt. Auf deutschen Systemen sollte man also diesen Link setzen:
$ ls -l /etc/localtime
lrwxrwxrwx 1 root root 33 2005-12-05 16:56
/etc/localtime -> /usr/share/zoneinfo/Europe/Berlin
Listing 9.110 Der localtime-Link
Anschließend kann wie gewohnt die Zeit über date eingestellt werden.
Die Hardwareuhr
UTC oder lokal?
Anschließend kann man die Hardwareuhr mittels hwclock setzen. Dabei macht es natürlich einen Unterschied, ob die Uhr auf UTC oder die lokale Zeit gesetzt werden soll:
# hwclock -wu
Listing 9.111 Die Hardwareuhr auf UTC setzen
# hwclock -w
Listing 9.112 Die Hardwareuhr auf lokale Zeit setzen
Beim Booten wird übrigens ebenfalls hwclock ausgeführt – allerdings mit der Option »-s«, um nicht die Hardware-, sondern die Systemuhr zu setzen. Der Parameter »-u« gibt auch hier wieder an, ob die Hardwareuhr als UTC oder lokale Zeit interpretiert werden soll.
9.8.4 Texte von anderen Plattformen
Manchmal kommt man in die Verlegenheit, einen unter Windows erstellten ASCII-Text unter Linux verarbeiten zu wollen – oder auch anders herum. Probleme gibt es vor allem bei den Zeilenenden: Linux nimmt dafür einen Zeilenvorschub, Mac-Systeme nehmen einen Wagenvorlauf und Windows nimmt gleich beides.
Um Texte zwischen den Systemen austauschen zu können, hilft das recode-Programm. Damit kann man sich – am besten ebenfalls in der eigenen /.bashrc – ein paar nützliche Aliase definieren:
alias unix2dos='recode lat1.ibmpc' alias dos2unix='recode ibmpc.lat1' alias unix2mac='recode lat1.mac' alias mac2unix='recode mac.lat1'
Listing 9.113 Texte konvertieren
Anschließend kann man unter Nutzung der Aliase einfach und schnell Texte für die jeweilige Plattform erstellen beziehungsweise von ihr konvertieren.