Inhaltsverzeichnis
Multilingualisation (M17N) oder native Sprachunterstützung (die Anpassung eines Software-Produkts zur Unterstützung mehrerer Sprachen) besteht aus zwei Schritten:
Internationalisierung (I18N): eine Software so einrichten, dass sie grundsätzlich verschiedene Gebietsschemata (Locales) unterstützt.
Lokalisierung (L10N): eine Software für die Unterstützung eines bestimmten Gebietsschemas anpassen.
|
Tipp |
|---|---|
|
Bei den englischen Begriffen Multilingualization, Internationalization und Localization befinden sich 17, 18 bzw. 10 Buchstaben zwischen dem ersten und letzten Buchstaben ("m" und "n", "i" und "n" bzw. "l" und "n"), was M17N, I18N und L10N ergibt. Weitere Details finden Sie unter Internationalization and localization (englisch). |
Das Verhalten von Programmen, die Internationalisierung unterstützen, wird
bestimmt durch die Umgebungsvariable "$LANG". Die
Unterstützung von Locale-abhängigen Funktionalitäten erfordert die
Installation von locales-Paketen oder dem Paket
locales-all. Die locales-Pakete müssen
korrekt eingerichtet sein.
Wenn weder irgendwelche locales-Pakete noch
locales-all installiert sind, gibt es keine
Locale-spezifischen Funktionalitäten und das System nutzt Meldungen in
amerikanischem Englisch; Daten werden als ASCII behandelt. Dieses Verhalten ist dasselbe, wie
wenn "$LANG" auf "LANG=",
"LANG=C" oder "LANG=POSIX" gesetzt
ist.
Moderne Software wie GNOME oder KDE ist für die Unterstützung verschiedener Sprachen ausgerüstet. Sie ist mittels UTF-8 internationalisiert und über übersetzte Texte mittels gettext(1)-Infrastruktur lokalisiert. Übersetzte Texte werden teilweise als separate Lokalisierungspakete bereitgestellt.
Das aktuelle grafische Arbeitsplatzsystem in Debian setzt das Gebietsschema
normalerweise in grafischen GUI-Umgebungen auf
"LANG=xx_YY.UTF-8". Hierbei entspricht
"xx" dem Sprachcode
gemäß ISO 639 und "YY" dem Ländercode gemäß ISO 3166. Diese Werte
werden über den Konfigurationsdialog der jeweiligen Arbeitsplatzumgebung
gesetzt und haben entsprechenden Einfluß auf die Programme. Näheres dazu
finden Sie in Abschnitt 1.5.2, „Die "$LANG"-Variable“.
Die einfachste Art von Textdaten ist ASCII, was passend ist für Englisch und weniger als 127 Zeichen enthält (welche in 7 Bits dargestellt werden können).
Sogar reiner Text in Englisch kann nicht-ASCII-Zeichen enthalten, so sind z.B. die leicht geschweiften rechten und linken Anführungszeichen in ASCII nicht enthalten:
“double quoted text” is not "double quoted ASCII" ‘single quoted text’ is not 'single quoted ASCII'
Um mehr Zeichen zu unterstützen, wurden weitere Zeichensätze und Zeichenkodierungen entwickelt, um eine Vielzahl von Sprachen unterstützen zu können (siehe Tabelle 11.2, „Liste von Werten für die Zeichenkodierung und deren Verwendung“).
Der Unicode-Zeichensatz kann nahezu alle dem Menschen bekannten Zeichen mit Codepunkten aus einem Bereich von 21 Bits (dies entspricht 0 bis 10FFFF in hexadezimaler Darstellung) abbilden.
Das Zeichenkodierungssystem UTF-8 passt Unicode-Codepunkte in einen 8 Bit breiten Datenstrom ein, der überwiegend zum ASCII-Datenverarbeitungssystem kompatibel ist. Das macht UTF-8 zur modernen und bevorzugten Zeichenkodierung. UTF steht dabei für Unicode Transformation Format. Wenn reiner ASCII-Text in UTF-8 konvertiert wird, hat er exakt den gleichen Inhalt und die gleiche Größe wie der originale ASCII-Text. Sie verlieren also nichts, wenn Sie ein UTF-8-Gebietsschema nutzen.
Mit einem UTF-8-Gebietsschema und einer dazu
kompatiblen Anwendung können Sie Textdaten in jeglicher fremden Sprache
anzeigen und editieren, solange die entsprechenden Schriftarten und
Eingabemethoden installiert und aktiviert sind. Wenn beispielsweise das
Gebietsschema auf "LANG=fr_FR.UTF-8" gesetzt ist, kann
mit gedit(1) (dem Texteditor der GNOME
Arbeitsplatzumgebung) chinesischer Text dargestellt und bearbeitet werden,
während das Menü in Französisch angezeigt wird.
|
Tipp |
|---|---|
|
Sowohl das neue (standardmäßige) " |
|
Anmerkung |
|---|---|
|
Einige Programme verbrauchen mehr Speicher, wenn sie I18N unterstützen. Das kommt daher, weil sie für die Unicode-Unterstützung intern UTF-32(UCS4) verwenden (zwecks Geschwindigkeitsoptimierung; dabei werden 4 Bytes für jedes ASCII-Zeichen genutzt, unabhängig vom gewählten Gebietsschema). Nochmals: Sie verlieren nichts, wenn Sie ein UTF-8-Gebietsschema einsetzen. |
Damit das System ein bestimmtes Gebietsschema verwenden kann, müssen die entsprechenden Locale-Daten aus der Datenbank kompiliert werden.
Das locales-Paket enthält all die verfügbaren
Locale-Daten nicht bereits
vorkompiliert. Sie müssen Sie also konfigurieren mittels:
# dpkg-reconfigure locales
Dieser Prozess besteht aus zwei Schritten:
Auswahl der benötigten Locale-Daten, die in die binäre Form kompiliert werden sollen. (Stellen Sie bitte sicher, dass Sie mindestens ein UTF-8-Gebietsschema auswählen.)
Setzen des Werts für das systemweite Standard-Gebietsschema (mittels
"/etc/default/locale"); dies wird von PAM genutzt
(Näheres in Abschnitt 4.5, „PAM und NSS“).
Der Wert für das systemweite Standard-Gebietsschema (in
"/etc/default/locale") kann von der Konfiguration für
grafische GUI-Anwendungen überschrieben werden.
|
Anmerkung |
|---|---|
|
Das effektiv genutzte Kodierungssystem kann über
" |
Das Paket locales-all enthält alle Locale-Daten in
vorkompilierter Form. Da es aber nicht
"/etc/default/locale" erzeugt, müssen Sie eventuell
trotzdem auch noch das locales-Paket installieren.
|
Tipp |
|---|---|
|
Das |
Für den Datenaustausch über verschiedene Plattformen hinweg (Näheres in Abschnitt 10.1.7, „Wechseldatenträger“) müssen Sie unter Umständen beim Einbinden einiger Dateisysteme bestimmte Kodierungen vorwählen. Zum Beispiel wird beim Einbinden eines vfat-Dateisystems durch mount(8) die CP437-Kodierung genutzt, wenn nichts anderes angegeben ist. Sie müssen eine explizite mount-Option angeben, wenn UTF-8 oder CP932 als Kodierung für die Dateinamen genutzt werden soll.
|
Anmerkung |
|---|---|
|
Wenn ein während des Betrieb eingesteckter USB-Flash-Speicher in einer modernen Arbeitsplatzumgebung wie GNOME automatisch eingebunden wird, können Sie solche mount-Optionen möglicherweise durch einen Rechtsklick auf das entsprechende Icon auf der Arbeitsfläche auswählen. Klicken Sie auf die Lasche "Laufwerk", klappen Sie per Mausklick die Liste der "Einstellungen" auf und geben Sie dann "utf8" bei den "Mount-Optionen" ein. Wenn der USB-Speicher das nächste Mal eingesteckt wird, ist das Einbinden mit UTF-8 automatisch aktiviert. |
|
Anmerkung |
|---|---|
|
Beim Hochrüsten eines Systems oder wenn Sie Laufwerke von älteren nicht-UTF-8-Systemen verwenden, könnten Dateinamen mit nicht-ASCII-Zeichen in historischen und überholten Kodierungen wie ISO-8859-1 oder eucJP kodiert sein. Bitte suchen Sie die Hilfe von Textkonvertierungswerkzeugen, um diese in UTF-8 zu konvertieren. Details hierzu finden Sie in Abschnitt 11.1, „Werkzeuge für Textkonvertierung“. |
Samba verwendet für neuere Clients (Windows NT,
200x, XP und später) standardmäßig Unicode, aber bei älteren für DOS und
Windows 9x/Me wird per Voreinstellung CP850
eingesetzt. Dieser Standard für ältere Clients kann mittels "dos
charset" in der Datei "/etc/samba/smb.conf"
geändert werden, CP932 zum Beispiel für
Japanisch.
Für viele Textmeldungen und Dokumente, die im Debian-System angezeigt werden, wie z.B. Fehlermeldungen, Standard-Programmausgaben, Menüs und Handbuchseiten, existieren Übersetzungen. Für die meisten Übersetzungsaktivitäten werden die GNU-gettext(1)-Werkzeuge als Backend-Programme im Hintergrund verwendet.
aptitude(8) bietet unter "Tasks" → "Lokalisierung" eine ausführliche Liste nützlicher Binärpakete, die lokalisierte Meldungen für Anwendungen und übersetzte Dokumentation enthalten.
So können Sie übersetzte Handbuchseiten (manpages) in Deutsch erhalten,
indem Sie das manpages-de-Paket installieren. Um
andererseits die italienische Handbuchseite für
programmname aus
"/usr/share/man/it/" zu lesen, führen Sie folgendes aus:
LANG=it_IT.UTF-8 man programname
GNU gettext kann über die Umgebungsvariable $LANGUAGE
eine priorisierte Liste von Übersetzungssprachen erstellen. Nutzen Sie dafür
zum Beispiel:
$ export LANGUAGE="pt:pt_BR:es:it:fr"
Bezüglich weiterer Infos lesen Sie info gettext und dort
speziell den Abschnitt "The LANGUAGE variable".
Die Sortierreihenfolge der Zeichen bei Befehlen wie
sort(1) und ls(1) ist abhängig von der
Locale. Das Exportieren der Variablen LANG=en_US.UTF-8
führt zur Reihenfolge wie in einem Lexikon
(A->a->B->b...->Z->z), während
LANG=C.UTF-8 eine Reihenfolge in ASCII-Binärform bewirkt
(A->B->...->Z->a->b...).
Das Gebietsschema wirkt sich auch auf das Datumsformat von ls(1) aus (Näheres in Abschnitt 9.3.4, „Angepasste Anzeige von Datum und Uhrzeit“).
Das Datumsformat von date(1) ist abhängig von der Locale. Zum Beispiel:
$ unset LC_ALL $ LANG=en_US.UTF-8 date Thu Dec 24 08:30:00 PM JST 2023 $ LANG=en_GB.UTF-8 date Thu 24 Dec 20:30:10 JST 2023 $ LANG=es_ES.UTF-8 date jue 24 dic 2023 20:30:20 JST $ LC_TIME=en_DK.UTF-8 date 2023-12-24T20:30:30 JST
Die Zahlen-Interpunktion unterscheidet sich ebenfalls abhängig vom
Gebietsschema. Zum Beispiel wird ein-tausend-komma-eins im englischen
Gebietsschema "1,000.1" geschrieben, im deutschen
hingegen "1.000,1". Sie können den Unterschied in einem
Tabellenkalkulationsprogramm sehen.
Jegliches Detail der "$LANG"-Umgebungsvariable kann über
das Setzen einer der "$LC_*"-Variablen überschrieben
werden. Diese wiederum können über die "$LC_ALL"-Variable
überschrieben werden. Details hierzu finden Sie in der
locale(7)-Handbuchseite. Bitte versuchen Sie, dies alles
zu vermeiden und nutzen Sie nur die Variable "$LANG", um
eine der UTF-8-Locales zu setzen (außer Sie haben gute Gründe für die
Erstellung einer komplizierten Konfiguration).
Das Tastatursystem kann in verschiedenen Ebenen des Systems konfiguriert werden:
Linux-Kernel: keyboard(5)
X-Server: setxkbmap(1),
xkeyboard-config(5), Umgebungsvariable
XMODIFIERS
Grafische Desktop-Umgebung: Eingabemethoden-Rahmenwerk:
ibus, fcitx5
Anwendung: Umgebungsvariablen, um die Eingabequelle festzulegen:
GTK_IM_MODULE, QT_IM_MODULE,
QT_IM_MODULES, ...
Eingabemethoden-Rahmenwerk (IM), bestehend aus:
Eingabemethoden-Engine (IME): die eigentliche Eingabenmethodik
Konfiguration: erledigt die Konfiguration für IBus und andere Dienste wie IME-Plugins
Panel/Leiste: Benutzerschnittstelle wie eine Sprachenleiste und Auswahltabellen
Mehrsprachige Eingaben für Anwendungen werden im groben wie hier dargestellt verarbeitet:
Keyboard UI panel Configuration Application
| ^ | | ^ ^
v | v v | |
Linux kernel -> Input method engine (IME) -+-> Gtk, Qt ---+ |
| ^ | |
| | +-> X11, Wayland -+
v |
IME plugin (ibus-mozc, ...)
Das Debian-System kann mittels des Pakets
keyboard-configuration so konfiguriert werden, dass es
mit vielen internationalen Tastaturkonfigurationen funktioniert:
# dpkg-reconfigure keyboard-configuration
Für die Linux-Konsole und das X-Window-System werden damit Parameter in
"/etc/default/keyboard" angepasst. Viele
nicht-ASCII-Zeichen, inklusive akzentuierte Zeichen, die in europäischen
Sprachen verwendet werden, sind über die Tottaste, AltGr-Taste und Compose-Taste zugänglich.
|
Anmerkung |
|---|---|
|
Wenn ibus aktiv ist, könnte Ihre klassische X-Tastatur-Konfiguration
(durchgeführt über |
Anders als das X-Window-Protkoll unterstützt das Wayland-Core-Protokoll
nicht einmal die Eingabe von akzentuierten Zeichen. Populäre
Wayland-Compositoren, wie Mutter für GNOME
oder KWin für KDE, implementieren
Erweiterungsprotokolle wie text-input-unstable-v3 für die
Texteingabe (hier eine Tabelle der "derzeitigen Wayland-Protokolle und
deren Status").
Das text-input-unstable-v3-Protokoll funktioniert gut mit
Eingabemethoden für Wayland (siehe auch "Wayland Eingabemethoden-Projekt
post-mortem").
Die meisten grafischen Anwendungen werden mit GUI-Bibliotheken wie GTK oder
Qt gebaut, die text-input-unstable-v3 unterstützen.
Populäre Eingabemethoden-Engines (IME), wie IBus
oder Fcitx (Version 5), arbeiten gut
mit text-input-unstable-v3 zusammen.
IMEs unterstützen die Texteingabe für viele Sprachen über Plugins.
Aktuelle IMEs integrieren Funktionalitäten der "X Keyboard Extensions (XKB)" zur
Eingabe von akzentuierten Zeichen in europäischen Sprachen unter Wayland,
ähnlich wie setxkbmap dies früher für X Window tat.
Für GNOME ist"ibus" die Standard-IME, und wird über ihre
Paketabhängigkeiten automatisch installiert.
Die meisten Funktionalitäten für multilinguale Tastatureingaben können über "GNOME Settings" oder "GNOME Tweaks" konfiguriert werden.
Einige wenige Features für multilinguale Tastatureingaben müssen eventuell über den Befehl ibus-setup(1) konfiguriert werden.
Die emoji-Eingabemethode ist verfügbar, indem
Sie "SUPER-." eingeben (gleichzeitig die Windows- und die
Punkt-Taste drücken), gefolgt von einem Schlüsselwort für das jeweilige
Emoji und der Leertaste.
Hier eine Liste der IBus- und zugehöriger Plugin-Pakete:
Tabelle 8.1. Liste von IBus- und dessen Plugin-Paketen
| Paket | Popcon | Größe | unterstütztes Gebietsschema |
|---|---|---|---|
| ibus | V:210, I:250 | 1828 | Eingabemethoden-Rahmenwerk, das dbus verwendet |
| ibus-mozc | V:2.2, I:3.9 | 979 | Japanisch |
| ibus-anthy | V:0.5, I:1.2 | 8958 | Japanisch |
| ibus-skk | V:0.05, I:0.16 | 242 | Japanisch |
| ibus-kkc | V:0.04, I:0.17 | 206 | Japanisch |
| ibus-libpinyin | V:1.1, I:5.1 | 123 | Chinesisch (für zh_CN) |
| ibus-chewing | V:0.16, I:0.84 | 298 | Chinesisch (für zh_TW) |
| ibus-libzhuyin | V:0.00, I:0.12 | 41021 | Chinesisch (für zh_TW) |
| ibus-rime | V:0.26, I:0.49 | 76 | Chinesisch (für zh_CN/zh_TW) |
| ibus-cangjie | V:0.01, I:0.11 | 235 | Chinesisch (für zh_HK) |
| ibus-hangul | V:0.3, I:2.0 | 261 | Koreanisch |
| ibus-libthai | V:0.00, I:0.04 | 84 | Thailändisch |
| ibus-table-thai | I:0.05 | 59 | Thailändisch |
| ibus-unikey | V:0.18, I:0.38 | 286 | Vietnamesisch |
| keyman | V:0.00, I:0.12 | 507 | Multilingual: Keyman-Plugin für mehr als 2000 Sprachen |
| ibus-table | V:0.1, I:1.0 | 2364 | Tabellen-Plugin für IBus |
| ibus-m17n | V:0.2, I:1.9 | 373 | Multilingual: Indisch, Arabisch und andere |
Das Eingabemethode-Rahmenwerk Fcitx (Version 5)
ist beliebt bei chinesischen Benutzern und kompatibel mit
"ibus".
Hier eine Liste der fcitx5- und zugehöriger Plugin-Pakete:
Tabelle 8.2. Liste von Fcitx5- und dessen Plugin-Paketen
| Paket | Popcon | Größe | unterstütztes Gebietsschema |
|---|---|---|---|
| fcitx5 | V:8, I:12 | 761 | Eingabemethoden-Rahmenwerk kompatibel mit "ibus" |
| fcitx5-mozc | V:1.1, I:1.8 | 1265 | Japanisch |
| fcitx5-anthy | V:0.07, I:0.21 | 808 | Japanisch |
| fcitx5-skk | V:0.06, I:0.17 | 369 | Japanisch |
| fcitx5-kkc | V:0.01, I:0.07 | 416 | Japanisch |
| fcitx5-chinese-addons | I:9.0 | 17 | Chinesisch (Metapaket für zh_*) |
| fcitx5-pinyin | V:3.9, I:9.4 | 996 | Chinesisch (für zh_CN) |
| fcitx5-chewing | V:0.24, I:0.93 | 217 | Chinesisch (für zh_TW) |
| fcitx5-zhuyin | I:0.07 | 41051 | Chinesisch (für zh_TW) |
| fcitx5-rime | V:0.45, I:0.90 | 371 | Chinesisch (für zh_CN/zh_TW) |
| fcitx5-table-cangjie-large | I:0.12 | 1292 | Chinesisch (für zh_HK) |
| fcitx5-hangul | V:0.11, I:0.25 | 235 | Koreanisch |
| fcitx5-libthai | I:0.04 | 119 | Thailändisch |
| fcitx5-table-thai | I:0.07 | 34 | Thailändisch |
| fcitx5-unikey | V:0.09, I:0.20 | 588 | Vietnamesisch |
| fcitx5-m17n | V:0.16, I:0.58 | 259 | Multilingual: Indisch, Arabisch und andere |
| fcitx5-table | V:0.3, I:9.3 | 417 | Tabellen-Plugin für fcitx5 |
| fcitx5-keyman | V:0.04, I:0.05 | 235 | Multilingual: Keyman-Plugin für mehr als 2000 Sprachen |
Ich finde die japanische Eingabemethode, gestartet in einer englischen
Umgebung ("en_US.UTF-8"), sehr nützlich. Hier ein
Beispiel, wie ich dies mit IBus eingerichtet habe:
Installieren Sie das japanische Eingabewerkzeug über
ibus-mozc (oder ibus-anthy).
Allgemein: ibus-setup(1) ausführen → "Eingabemethode"
auswählen → klicken auf "Hinzufügen" → "Japanisch" →
"Mozc (oder Anthy)" → Klicken auf "Hinzufügen"
GNOME: "Einstellungen" wählen → "Tastatur" → "Eingabequellen", bei den
"Eingabequellen" klicken auf "+" → "Japanisch" → "Mozc
(oder Anthy)" → klicken auf "Hinzufügen"
Sie können weitere Eingabequellen wählen.
Melden Sie sich am Benutzerkonto neu an.
Richten Sie jede Eingabequelle durch einen Rechtsklick auf das Icon in der GUI-Werkzeugleiste ein.
Wählen Sie zwischen den installierten Eingabequellen mittels SUPERTASTE+LEERTASTE (die SUPERTASTE ist normalerweise die Windows-Taste).
|
Tipp |
|---|---|
|
Wenn Sie mit Ihrer japanischen Tastatur Zugriff auf eine Tastaturumgebung
mit alphabetischen Zeichen wünschen, bei der Umschalt- |
Für Wayland:
Das im-config-Paket hat keinen Zweck und kann entfernt
werden.
Möglicherweise müssen Sie keine Umgebungsvariablen mehr setzen, ausser zum Zwecke der Rückwärtskompatibilität.
Falls Sie Umgebungsvariablen setzen müssen, erzeugen Sie eine Datei wie
"~/.config/environment.d/50-input-method.conf", um sie
festzulegen.
Für X-Window:
Installieren Sie das im-config-Paket.
Der Eintrag für im-config(8) im GUI-Menü ist "Eingabemethode"; starten Sie es jetzt.
Alternativ führen Sie jetzt "im-config" über eine
Benutzer-Shell aus.
im-config(8) verhält sich unterschiedlich abhängig davon, ob es von root ausgeführt wurde oder nicht.
im-config(8) aktiviert standardmäßig ohne weiteres Zutun des Benutzers die beste Eingabemethode auf dem System.
Die Linux-Konsole kann nur einen beschränkten Bereich von Zeichen anzeigen. (Sie benötigen ein spezielles Terminal-Programm wie jfbterm(1), um nicht-europäische Sprachen in der Konsole außerhalb der grafischen Umgebung anzuzeigen.)
Die grafische Umgebung (Kapitel 7, GUI-System) kann jegliche Zeichen in UTF-8 anzeigen, sofern die benötigten Schriften installiert und aktiviert sind. (Die Kodierung der Original-Schriftdaten wird für den Benutzer transparent erledigt.)
Das Debian-System kann über das Paket console-setup so
eingerichtet werden, dass es mit vielen internationalen
Tastaturkonfigurationen funktioniert:
# dpkg-reconfigure console-setup
Für die Linux-Konsole und das X-Window-System werden damit Parameter in
"/etc/default/console-setup" angepasst, um viele
nicht-ASCII-Zeichen, inklusive akzentuierte Zeichen, die in europäischen
Sprachen verwendet werden, anzeigen zu können.
Es existieren mehrere Komponenten zur Konfiguration von Systemfunktionalitäten für textbasierte Konsolen und ncurses(3):
die Datei "/etc/terminfo/*/*"
(terminfo(5));
die Umgebungsvariable "$TERM"
(term(7));
setterm(1), stty(1), tic(1) und toe(1).
Falls bei Anmeldung von fern auf einem Debian-System mit einem
Debian-fremden xtermder
terminfo-Eintrag für xterm nicht
funktioniert, ändern Sie den Terminaltyp ("$TERM") von
"xterm" auf eine der funktionseingeschränkten Versionen
wie "xterm-r6". Näheres dazu finden Sie in
"/usr/share/doc/libncurses5/FAQ".
"dumb" ist der kleinste gemeinsame Nenner für
"$TERM".
Bei Verwendung des ostasiatischen Gebietsschemas können die Zeichnung der Box sowie griechische und kyrillische Schriftzeichen breiter als beabsichtigt dargestellt werden, was zu einer ungleichmäßigen, schlecht ausgerichteten Terminalausgabe führt (näheres unter Unicode Standard Annex #11, 4.2 Ambiguous Characters).
Sie können dies Problem jedoch umgehen:
gnome-terminal: Einstellungen → Profile →
Profilname → Kompatibilität → Zeichen mit unbekannter
Breite → Schmal
ncurses: Setzen einer Umgebungsvariablen mit
export NCURSES_NO_UTF8_ACS=0.