LPIC102/107.3 Lokalisierung und internationalisierung

Aus Foxwiki

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.
  1. konfigurieren der locale-Einstellungen und Umgebungsvariablen
  2. 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:

  1. Latin-1, Westeuropäisch
  2. Latin-2, Mitteleuropäisch
  3. Latin-3, Südeuropäisch
  4. Latin-4, Baltisch
  5. Kyrillisch
  6. Arabisch
  7. Griechisch
  8. Hebräisch
  9. Latin-5, Türkisch
  10. Latin-6, Nordisch
  11. Thai
  12. Latin-7, Baltisch
  13. Latin-8, Keltisch
  14. Latin-9, Westeuropäisch
  15. 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

  1. Lpic1 V500 Seite 359 - 371
  2. Fragen 52 - 60