Locale: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
K (→‎Aktivierung und Verwendung: en_DK auch hier raus)
 
(9 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Locales werden in Linux benutzt, um die Sprache des Benutzers festzulegen. Da die locales auch den Zeichensatz der Sprache bestimmen, ist eine korrekte Einstellung dieser, besonders bei Sprachen, die nicht-ASCII Zeichen benutzen, besonders wichtig.
''Locales'' werden unter Linux benutzt, um die Systemsprache, sowie weitere Eigenschaften festzulegen. Dies beinhaltet Fehlermeldungen, je nach Programm auch Logeinträge, die Benutzerschnittstelle, oder das GUI. Zudem werden auch Formatierungen (Zahlen, Sortier-Rangfolge, Währungsinformationen, Papiergröße, etc.) durch die Locale bestimmt.


Locales werden nach folgender Syntax benannt:
Über die Locale wird zudem der verwendete Zeichensatz festgelegt. Dies ist vor allem bei Sprachen, die nicht ausschließlich, oder gar keine, ASCII-Zeichen verwenden zu berücksichtigen.
[language[_territory][.codeset][@modifier]]


In diesem HowTo werden wir ein System so konfigurieren, dass es die de_DE.UTF-8 locale benutzt. Dieses HowTo sowie mit anderen locales zu benutzen, ist allerdings auch ohne Aufwand möglich.
== Aufbau ==
Locales bestehen aus bis zu vier Elementen.


==Aktivieren der notwendigen locales==
Sprache[_Region][.Kodierung][@Modifikator]
Als erstes müssen die locales, die von dem System unterstützt werden sollen, aktiviert werden. Dazu wird die Datei '''/etc/locale.gen''' verwendet; sie beinhaltet eine Liste aller möglichen locales. Durch auskommentieren einzelner Einträge wird diese locale aktiviert.


Da wir ein deutsches, UTF-8 konformes System haben wollen, aktivieren wir zunächst de_DE.UTF-8. Aus Kompatiblitätsgründen sollten allerdings auch alle anderen locales, die mit de_DE beginnen, aktiviert werden, da Programme, die kein Unicode unterstützen, diese locales benötigen. Damit müssen wir mindestens die folgenden locales aktivieren:
Einzig die Angabe zur Sprache ist verbindlich. Region, Kodierung, und Modifikator sind optionale Angaben.
de_DE.UTF-8 UTF-8
de_DE    ISO-8859-1
de_DE@euro  ISO-8859-15


Um die Änderungen in der Datei wirksam zu machen, muss als root folgender Befehl ausgeführt werden:
=== Sprache und Region ===
# locale-gen
Die Sprachdefinitionen werden von der IANA verwaltet (siehe Weblinks). Abweichend zur BCP 47 werden Sprachdefinition und Region durch einen Unterstrich, und nicht durch ein Minuszeichen getrennt.
Generating locales...
  de_DE.UTF-8... done
  de_DE.ISO-8859-1... done
  de_DE.ISO-8859-15@euro... done
Generation complete.


'''Hinweis:''' Obwohl es in der Regel nur eine Sprache ist, die du benutzt, ist es in manchen Situationen hilfreich bis notwendig, weitere locales zu aktivieren. Beispielsweise werden Benutzer eines multi-user Systems, die kein Deutsch sprechen, erst zufrieden sein, wenn ihre eigene Sprache vollständig unterstützt wird.
de_DE
en_US
es_CU


==Setzen der system-weiten locale==
Damit sind bereits gültige Locales vorhanden. Im Beispiel „deutsches Deutsch“, amerikanisches Englisch und kubanisches Spanisch. Eine Liste der verfügbaren Locales stellt zum einen die unveränderte Datei {{ic|/etc/locale.gen}} aus dem Paket {{paket|glibc}} dar, ist über die Dateien in {{ic|/usr/share/i18n/locales}} zu finden, aber auch im Netz zum Beispiel über den ''Locale Helper'' (siehe Weblinks) abrufbar.
Welche locale vom System und als Standard-locale verwendet wird, wird in der Datei '''/etc/rc.conf''' definiert. Da wir die ISO-8859-1 und die ISO-8859-15 locales lediglich aus (Abwärts-)Kompatiblitätsgründen aktiviert haben, tragen wir hier de_DE.utf-8 ein.
LOCALE="de_DE.utf8"


Die Änderung der system-weite locale wird nach einem Neustart des Computers aktiv.
=== Kodierung ===
Neben der eigentlichen Sprach- und Regionsangabe ist die wichtigste Angabe einer Locale die Kodierung. Viele Sprachen benötigen diverse diakritische Zeichen (Umlaut-Punkte im Deutschen, Akut und Gravis im Französischen, Cedille im Türkischen, und dergleichen), die an den Grundbuchstaben angebracht werden (zum Beispiel {{ic|o}} + {{ic|¨}} = {{ic|ö}}, oder {{ic|c}} + {{ic|¸}} = {{ic|ç}}).


==Setzen der benutzerbasierten locale==
Diese Definitionen, sowie generell die Repräsentation eines Zeichens als Bitfolge, wird über die Zeichenkodierung bestimmt. Diese Angabe wird an die Locale durch einen Punkt getrennt angehängt.
Wie schon bemerkt, kann es sein, dass einige Benutzer locales definieren wollen, die nicht mit der system-weiten locale übereinstimmen.
Um diesen Fall zu realisieren, muss die Variable LC_ALL in der '''~/.bashrc''' exportiert werden.
Zum Beispiel kann ein Benutzer die de_DE.iso88591 locale verwenden, wobei das keinen Vorteil gegenüber der UTF-8 locale bringen würde, sondern sogar eher nachteilig ist.
export LC_ALL=de_DE.iso88591


Diese Änderung der locales werden aktiv, sobald sich der Benutzer neu anmeldet. Allerdings kann man die Änderung auch manuell aktivieren:
de_DE.utf8
  $ source ~/.bashrc
en_US.utf8
  es_CU.utf8


==Spracheinstellung==
Heutzutage wird gemeinhin UTF-8 verwendet. UTF-8 ist die am weitesten verbreitete Kodierung für Unicode-Zeichen. Es ist kompatibel mit ASCII (der 128 Zeichen umfassende ASCII-Zeichensatz wird durch die ersten 128 UTF-8-Zeichen abgebildet), kann variabel bis zu vier Byte je Zeichen verwenden und deckt somit den gesamten Unicode-Zeichenbereich ab.
Die Sprache, in der die Kommunikation zwischen Computer und Benutzer erfolgt, wird ebenfalls über die locales definiert; namentlich über die Variable LC_LANG. Diese Variable wird ebenfalls benutzerbasiert in der ~/.bashrc gesetzt:
export LC_LANG=en_EN.utf8
Nach dem erneuten Laden der ~/.bashrc sollten alle Programme die gewählte Sprache verwenden, gesetzt den Fall, dass sie diese unterstützen und korrekte Internationalisierungsmethoden verwenden.


==Fehlerbehandlung==
=== Modifikator ===
===Woher bekomme ich die Namen der verfügbaren locales?===
Der Modifikator bestimmt, dass abweichend der durch die Locale bestimmten Eigenschaften andere Eigenschaften gesetzt werden. Dies ist zum Beispiel von Bedeutung, wenn man {{ic|sr_RS}} („Serbisches Serbisch“) verwendet, dessen Eigenschaften dem Kyrillischen folgen.
Die korrekten Namen aller verfügbaren locales können mittels folgenden Befehls abgerufen werden:
$ locale -a
===Wie kann ich prüfen, welche locales ich benutze?===
Welche locales zur Zeit benutzt werden, kann eingesehen werden, indem man einfach folgenden Befehl eingibt:
$ locale
===Mein Terminal unterstützt keine UTF-8 Zeichen===
Leider unterstützen einige Terminale noch kein UTF-8. In diesen Fällen solltest du dich für ein anderes Terminal entscheiden.


'''Liste der Terminals, die UTF-8 unterstützen:'''
Mittels des Modifikators {{ic|latin}} wird dieses Verhalten geändert, und es werden die gängigen westlichen Eigenschaften im Bezug auf Sortierung, etc. verwendet. Folgende Beispiele verdeutlichen den Einsatz des Modifikators.
* gnome-terminal
* gnustep-terminal
* mlterm
* urxvt (rxvt-unicode)
* xfce-terminal
* xterm
'''Hinweis:''' Diese Liste kann unvollständig sein.


===xterm unterstützt keine UTF-8 Zeichen===
sr_RS.utf8@latin
xterm unterstützt UTF-8 lediglich, wenn es als uxterm oder als xterm -u8 gestartet wird.
tt_RU@iqtelif
de_DE.utf8@euro  # Sonderfall


[[en:Locale]]
Der Sonderfall {{ic|de_DE.utf8@euro}} wird zwar an vielen Stellen erwähnt, ist aber selbstaufhebend. Mittels {{ic|utf8}} wird zwar bestimmt, dass die UTF-8-Kodierung benutzt werden soll, durch den Modifikator {{ic|euro}} wird gemäß Definition die Kodierung auf ISO-8859-15 gestellt, da dort das Eurozeichen explizit vorhanden ist.


[[Kategorie:Grundlagen]]
Da das Eurozeichen allerdings auch in Unicode ({{ic|U+20AC}}), und damit in UTF-8 vorhanden ist, ist diese Angabe überflüssig und verhindert sogar, den kompletten Unicode-Zeichenvorrat nutzen zu können, da ISO-8859-15 diesen nicht vollständig abdeckt.
 
== Aktivierung und Verwendung ==
Standardmäßig sind keine Locales aktiviert, und das System greift auf vorhandene Systemstandards zurück. Locales werden in {{ic|/etc/locale.gen}} definiert, und mittels {{ic|locale-gen}} generiert. Der Wiki-Artikel [[Arch Linux auf Deutsch stellen]] erklärt anhand des Auf-Deutsch-Stellens eines Systems die praktische Verwendung.
 
Alle verfügbaren Locales kann man sich mittels {{ic|locale -a}} anzeigen lassen. Alle Angaben dort kann man in entsprechenden Umgebungsvariablen (den ''LC-Variablen'' und {{ic|LANG}}) verwenden, um die Ausgaben der Programme anzupassen.
 
Entsprechende Definitionen werden sytemweit in {{ic|/etc/locale.conf}} oder accountbezogen {{ic|~/.config/locale.conf}} vorgenommen, und bestehen aus [[Umgebungsvariablen|Exports]] der gewünschten Angaben.
 
{{hc|1=~/.config/locale.conf|2=
export LC_DATE=de_DE.utf8
export LC_NUMERIC=de_DE.utf8
export LC_TIME=de_DE.utf8
export LANG=de_DE.utf8}}
 
Hier werden vier Variablen useraccountbezogen gesetzt.
 
== Siehe auch ==
* [[Arch Linux auf Deutsch stellen]]
* [[locale.conf]]
 
== Weblinks ==
* [http://lh.2xlibre.net/locales Der ''Locale Helper''] {{sprache|en}}
* [http://tools.ietf.org/html/bcp47 BCP 47: Tags for Identifying Languages] {{sprache|en}}
* [http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry Sprachdatenbank der IANA] {{sprache|en}}
*  [http://www.charbase.com/ Unicode-Zeichen „nach Beliebtheit“] {{sprache|en}}
* [http://www.fileformat.info/info/unicode/block/index.htm Verfügbare Unicode-Blöcke] {{sprache|en}}
 
[[en:locale]]
[[Kategorie: Konfiguration]]
[[Kategorie: Grundlagen]]

Aktuelle Version vom 9. Juli 2021, 09:18 Uhr

Locales werden unter Linux benutzt, um die Systemsprache, sowie weitere Eigenschaften festzulegen. Dies beinhaltet Fehlermeldungen, je nach Programm auch Logeinträge, die Benutzerschnittstelle, oder das GUI. Zudem werden auch Formatierungen (Zahlen, Sortier-Rangfolge, Währungsinformationen, Papiergröße, etc.) durch die Locale bestimmt.

Über die Locale wird zudem der verwendete Zeichensatz festgelegt. Dies ist vor allem bei Sprachen, die nicht ausschließlich, oder gar keine, ASCII-Zeichen verwenden zu berücksichtigen.

Aufbau

Locales bestehen aus bis zu vier Elementen.

Sprache[_Region][.Kodierung][@Modifikator]

Einzig die Angabe zur Sprache ist verbindlich. Region, Kodierung, und Modifikator sind optionale Angaben.

Sprache und Region

Die Sprachdefinitionen werden von der IANA verwaltet (siehe Weblinks). Abweichend zur BCP 47 werden Sprachdefinition und Region durch einen Unterstrich, und nicht durch ein Minuszeichen getrennt.

de_DE
en_US
es_CU

Damit sind bereits gültige Locales vorhanden. Im Beispiel „deutsches Deutsch“, amerikanisches Englisch und kubanisches Spanisch. Eine Liste der verfügbaren Locales stellt zum einen die unveränderte Datei /etc/locale.gen aus dem Paket glibc dar, ist über die Dateien in /usr/share/i18n/locales zu finden, aber auch im Netz zum Beispiel über den Locale Helper (siehe Weblinks) abrufbar.

Kodierung

Neben der eigentlichen Sprach- und Regionsangabe ist die wichtigste Angabe einer Locale die Kodierung. Viele Sprachen benötigen diverse diakritische Zeichen (Umlaut-Punkte im Deutschen, Akut und Gravis im Französischen, Cedille im Türkischen, und dergleichen), die an den Grundbuchstaben angebracht werden (zum Beispiel o + ¨ = ö, oder c + ¸ = ç).

Diese Definitionen, sowie generell die Repräsentation eines Zeichens als Bitfolge, wird über die Zeichenkodierung bestimmt. Diese Angabe wird an die Locale durch einen Punkt getrennt angehängt.

de_DE.utf8
en_US.utf8
es_CU.utf8

Heutzutage wird gemeinhin UTF-8 verwendet. UTF-8 ist die am weitesten verbreitete Kodierung für Unicode-Zeichen. Es ist kompatibel mit ASCII (der 128 Zeichen umfassende ASCII-Zeichensatz wird durch die ersten 128 UTF-8-Zeichen abgebildet), kann variabel bis zu vier Byte je Zeichen verwenden und deckt somit den gesamten Unicode-Zeichenbereich ab.

Modifikator

Der Modifikator bestimmt, dass abweichend der durch die Locale bestimmten Eigenschaften andere Eigenschaften gesetzt werden. Dies ist zum Beispiel von Bedeutung, wenn man sr_RS („Serbisches Serbisch“) verwendet, dessen Eigenschaften dem Kyrillischen folgen.

Mittels des Modifikators latin wird dieses Verhalten geändert, und es werden die gängigen westlichen Eigenschaften im Bezug auf Sortierung, etc. verwendet. Folgende Beispiele verdeutlichen den Einsatz des Modifikators.

sr_RS.utf8@latin
tt_RU@iqtelif
de_DE.utf8@euro  # Sonderfall

Der Sonderfall de_DE.utf8@euro wird zwar an vielen Stellen erwähnt, ist aber selbstaufhebend. Mittels utf8 wird zwar bestimmt, dass die UTF-8-Kodierung benutzt werden soll, durch den Modifikator euro wird gemäß Definition die Kodierung auf ISO-8859-15 gestellt, da dort das Eurozeichen explizit vorhanden ist.

Da das Eurozeichen allerdings auch in Unicode (U+20AC), und damit in UTF-8 vorhanden ist, ist diese Angabe überflüssig und verhindert sogar, den kompletten Unicode-Zeichenvorrat nutzen zu können, da ISO-8859-15 diesen nicht vollständig abdeckt.

Aktivierung und Verwendung

Standardmäßig sind keine Locales aktiviert, und das System greift auf vorhandene Systemstandards zurück. Locales werden in /etc/locale.gen definiert, und mittels locale-gen generiert. Der Wiki-Artikel Arch Linux auf Deutsch stellen erklärt anhand des Auf-Deutsch-Stellens eines Systems die praktische Verwendung.

Alle verfügbaren Locales kann man sich mittels locale -a anzeigen lassen. Alle Angaben dort kann man in entsprechenden Umgebungsvariablen (den LC-Variablen und LANG) verwenden, um die Ausgaben der Programme anzupassen.

Entsprechende Definitionen werden sytemweit in /etc/locale.conf oder accountbezogen ~/.config/locale.conf vorgenommen, und bestehen aus Exports der gewünschten Angaben.

~/.config/locale.conf
export LC_DATE=de_DE.utf8
export LC_NUMERIC=de_DE.utf8
export LC_TIME=de_DE.utf8
export LANG=de_DE.utf8

Hier werden vier Variablen useraccountbezogen gesetzt.

Siehe auch

Weblinks