LPIC102/107.3 Lokalisierung und internationalisierung
Um ein Betriebssystem in unterschiedlichen Ländern und Sprachen zu verwenden muss man eine Zeitzone konfigurieren. Eigenschaften wie Währung, Datums- und Uhrzeitformat, Telefonnummernformate und physikalische Grössen (metrisch oder nicht) müssen definiert werden! Häufige Fehler sind falsche Zeichensätze, oftmals Zeichen die falsch oder auch gar nicht dargestellt werden! Zeitzoneneinstellungen die nachträglich geändert werden müssen, kann man z.B. mit dem Programm tzselect in der Kommandozeile korrigieren.
Wichtung: 3
Kandidaten sollten in der Lage sein, ein System in einer anderen Sprache als Englisch zu lokalisieren. Dazu gehört auch das Verständnis dafür, warum LANG=C in Shell-Skripten nützlich ist.
- konfigurieren der locale-Einstellungen und Umgebungsvariablen
- konfigurieren von Zeitzonen-Einstellungen und Umgebungsvariablen
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/timezone /etc/localtime /usr/share/zoneinfo LC_* LC_ALL LANG TZ' /usr/bin/locale tzselect timedatectl date iconv UTF-8 ISO-8859 ASCII Unicode
Beispiel:
# tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent or ocean. 1) Africa 2) America 3) Antarctica 4) Arctic Ocean 5) Asia 6) Atlantic Ocean 7) Australia 8) Europe 9) Indian Ocean 10) Pacific Ocean 11)none–I want to specify the time zone using the Posix TZ format. #?
8
Unser Beispiel zeigt Europa.
Please select a country. 1) Aaland Islands 18) Greece 35) Norway 2) Albania 19) Guernsey 36) Poland 3) Andorra 20) Hungary 37) Portugal 4) Austria 21) Ireland 38) Romania 5) Belarus 22) Isle of Man 39) Russia 6) Belgium 23) Italy 40) San Marino 7) Bosnia & Herzegovina 24) Jersey 41) Serbia 8) Britain (UK) 25) Latvia 42) Slovakia 9) Bulgaria 26) Liechtenstein 43) Slovenia 10) Croatia 27) Lithuania 44) Spain 11) Czech Republic 28) Luxembourg 45) Sweden 12) Denmark 29) Macedonia 46) Switzerland 13) Estonia 30) Malta 47) Turkey 14) Finland 31) Moldova 48) Ukraine 15) France 32) Monaco 49) Vatican City 16) Germany 33) Montenegro 17) Gibraltar 34) Netherlands #?
Durch Eingabe der 16 wählen wir Deutschland und es erscheint eine abschliessende Abfrage ob alles korrekt ist:
The following information has been given: Germany Therefore TZ='Europe/Berlin' will be used. Local time is now: Sat Mar 24 11:56:57 CET 2018. Universal Time is now: Sat Mar 24 10:56:57 UTC 2018. Is the above information OK? 1) Yes 2) No #?
Die Darstellung zeigt die Orts- sowie der UTC Zeit. Erläuterungen zur UTC folgen. Das Programm tzselect verwendet für seine Anzeige die Dateien im Verzeichnis /usr/share/zoneinfo. Danach muss die Zeitzone in der Konfigurationsdatei /etc/timezone festgelegt werden. /# cat /etc/timezone Europe/Berlin. Ist der Eintrag nur vorübergehend oder für einen bestimmten Benutzer arbeitet man am besten mit der Variablen TZ (Timezone).profile-Datei. Für eine temporäre Änderung der Zeitzone setzen sie einfach die Variable auf der Konsole und exportieren sie. Beispiel für die Marshallinseln:
/# export TZ='Pacific/Majuro' .
Bei Überprüfung mit date und date -u sieht man folgende Ausgabe, wobei -u für UTC steht:
/# date So 29. Apr 05:02:30 MHT 2018 /# date -u Sa 28. Apr 17:02:34 UTC 2018.
Zeitzonen-Frontends
Einige Distributionen verwenden zum Einstellen der Zeitzone das Frontend tzconfig wobei ähnlich wie bei tzselect interaktiv nach dem Land gefragt wird, jedoch tatsächlich eine Konfiguration erfolgt. Unter Debian, Ubuntu und ähnlichen Betriebssystemen kann auch einfach dpkg-reconfigure tzdata menügeführt werden! Aktuelle Systeme mit Systemd verfügen zusätzlich über das Tool timedatectl das für jede Aufgabe mit Systemzeit verwendet werden kann. Zunächst ermittelt man die verfügbaren Zeitzonen:
# timedatectl list-timezones Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers Africa/Asmara
Dann einfach die gewünschte Zeitzone festlegen:
/]# timedatectl set-timezone Europe/Berlin
Dieses Kommando führ zu einer Neuverlinkung von /etc/timezone.
Umgebungsvariablen für die Lokalisation
Einige Anwendungsprogramme benötigen Informationen über regionale Gegebenheiten wie Währung, Papierformate, Datums- und Uhrzeitformat, Telefonnummernformate und physikalische Größen Parameter hierzu sind in Umgebungsvariablen hinterlegt.
Beispiel
Um einen schnellen Überblick zu erhalten, wie die Variablen eines Systems in Bezug auf die Lokalisation gerade gesetzt sind, können Sie das Kommando locale verwenden.
Option | Beschreibung |
---|---|
LANG=de_DE.UTF-8 | |
LC_CTYPE="de_DE.UTF-8" | Zeichenklassifikationen |
LC_COLLATE="de_DE.UTF-8" | Sortierreihenfolge |
LC_TIME="de_DE.UTF-8" | Zeit- und Datumsformat |
LC_NUMERIC="de_DE.UTF-8" | numerische Formate außerhalb des Finanzsektors |
LC_MONETARY="de_DE.UTF-8" | numerische Formate des Finanzsektors |
LC_MESSAGES="de_DE.UTF-8" | Formate für informative und diagnostische Benachrichtigungen |
LC_PAPER="de_DE.UTF-8" | Papierformate und Größen |
LC_NAME="de_DE.UTF-8" | Namenformate |
LC_ADDRESS="de_DE.UTF-8" | Adressformate |
LC_TELEPHONE="de_DE.UTF-8" | Formate der Telefonnummern |
LC_MEASUREMENT="de_DE.UTF-8" | Maßeinheiten (metrisch oder andere) |
LC_IDENTIFICATION="de_DE.UTF-8" | Metadaten der Lokalisation |
LC_ALL= |
Mit dem Kommando locale -a können Sie die verfügbaren Lokalisationen anzeigen (gemäß /usr/lib/locale).
/# locale -a aa_DJ aa_DJ.iso88591 aa_DJ.utf8 aa_ER aa_ER@saaho aa_ER.utf8 ... de_AT.utf8 de_BE.utf8 de_CH.utf8 de_DE.utf8 de_LI.utf8 de_LU.utf8 en_AU.utf8 en_BW.utf8 en_CA.utf8 ...
Um eine Liste der verfügbaren Zeichensätze anzuzeigen, können Sie locale mit der Option -m verwenden.
/# locale -m |head ANSI_X3.110-1983 ANSI_X3.4-1968 ARMSCII-8 ASMO_449 BIG5 BIG5-HKSCS BRF BS_4730 BS_VIEWDATA CP10007
Historische Zeichensätze
Um Zeichen elektonisch zu übertragen, müssen diese entsprechend umgewandelt werden. Dies geht auf Samuel Morse zurück und entwickelte sich zum ASCII Standart.
ASCII – American Standard Code for Information Interchange
Die Zeichenkodierung ASCII umfasst 128 Zeichen (denn 27 = 128), die sich in der ASCII-Tabelle wiederfinden.
https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange#ASCII-Tabelle
ISO 8859
Bei der ISO 8859 handelt es sich um eine ganze Normenfamilie. Jede Teilnorm der ISO 8859 ist ein 8-Bit-Zeichensatz. Die Gemeinsamkeit all dieser Normen liegt in den ersten 128 Zeichen. In der Aufstellung werden die Teilnormen aufgeführt:
- Latin-1, Westeuropäisch
- Latin-2, Mitteleuropäisch
- Latin-3, Südeuropäisch
- Latin-4, Baltisch
- Kyrillisch
- Arabisch
- Griechisch
- Hebräisch
- Latin-5, Türkisch
- Latin-6, Nordisch
- Thai
- Latin-7, Baltisch
- Latin-8, Keltisch
- Latin-9, Westeuropäisch
- Latin-10, Südosteuropäisch
Konvertierung von Zeichensätzen
Dateien von einer Zeichenkodierung in eine andere überführt man mit dem Kommandozeilenprogramm iconv
GNU | Unix | Beschreibung |
---|---|---|
--from-code | -f | gibt die aktuelle Zeichenkodierung an |
--to-code | -t | gibt die Zeichenkodierung für die Ausgabe an |
--list | -l | zeigt die dem Programm bekannten Kodierungen an |
--output | -o | gibt die Ausgabedatei an |
- Beispiel
$ iconv -f UTF-8 -t ISO-8859-15 Quelldatei -o Zieldatei
Quellenangaben
- Lpic1 V500 Seite 359 - 371
- Fragen 52 - 60