GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie wird das Gebietsschema eingestellt und welche Auswirkungen hat dies?

Diese Frage wurde angeregt durch das Stellen der Frage
Chromium browser does not allow set the default paper size for „Print to File“ und auch durch ein Gespräch mit @Gilles im Chat. Wie von @don_crissti aufgezeigt und von mir verifiziert, ändert das Gebietsschema (mindestens LC_PAPER ) macht einen Unterschied in der Auswahl des Papierformats.

Ich hatte nie viel darüber nachgedacht, was ich auswählen sollte, und mich immer für en_US.UTF-8 entschieden weil es wie eine vernünftige Standardauswahl erschien.

Allerdings per @Gilles im Chat (siehe Konversation ab http://chat.stackexchange.com/transcript/message/17017095#17017095). Auszüge:

Gilles:LC_PAPER ist standardmäßig $LANG

Gilles:Sie müssen LANG=en_US.UTF-8 haben. Das ist eine schlechte Idee:Es setzt
LC_COLLATE und das ist fast immer eine schlechte Sache

Gilles:LC_COLLATE beschreibt keine korrekte Sortierung, es ist zu
restriktiv (es geht Zeichen für Zeichen). LANG entfernen und stattdessen
LC_CTYPE und LC_PAPER setzen

Gilles:plus LC_MESSAGES, wenn Sie Nachrichten in einer anderen Sprache als
Englisch

wünschen

Natürlich gibt es hier Probleme, die mir nicht bekannt sind, und ich bin sicher, dass es vielen anderen ebenso geht. Welche Probleme sollten Sie also beim Festlegen von Gebietsschemas berücksichtigen und wie sollten Sie sie festlegen? Ich habe immer nur dpkg-reconfigure locales ausgeführt in Debian, und nicht zweimal darüber nachgedacht.

Spezifische Frage:Soll ich mein Gebietsschema auf en_IN.UTF-8 setzen? Gibt es Nachteile?

Akzeptierte Antwort:

Gebietsschemaeinstellungen sind Benutzereinstellungen, die sich auf Ihre Kultur beziehen.

Lokale Namen

Bei allen aktuellen Unix-Varianten, die ich kenne (aber nicht bei einigen Antiquitäten), folgen Gebietsschemanamen demselben Muster:

  • Ein aus zwei Buchstaben bestehender ISO 639-1-Sprachcode oder ein aus drei Buchstaben bestehender ISO 639-2-Sprachcode, wenn die Sprache keinen aus zwei Buchstaben bestehenden Code hat. Beispiel:en für Englisch de für Deutsch ja für Japanisch uk für Ukrainisch ber für Berber, …
  • Für viele, aber nicht alle Sprachen, ein Unterstrich _ gefolgt von einem aus zwei Buchstaben bestehenden ISO 3166-Ländercode in Großbuchstaben. Also:en_US für US-Englisch en_UK für britisches Englisch fr_CA Kanadisches (Québec) Französisch, de_DE für Deutsch von Deutschland, de_AT für Deutsch von Österreich, ja_JP für Japanisch (aus Japan) usw.
  • Optional ein Punkt . gefolgt vom Namen einer Zeichenkodierung wie UTF-8 , ISO-8859-1 , KOI8-U , GB2312 , Big5 usw. Zumindest bei GNU libc (ich weiß nicht, wie verbreitet das ist) werden Groß- und Kleinschreibung und Satzzeichen bei der Codierung von Namen ignoriert. Beispiel:zh_CN.UTF-8 ist Mandarin (vereinfachtes) Chinesisch, kodiert in UTF-8, während zh_CN ist Mandarin-Chinesisch, kodiert in GB2312, und zh_TW ist taiwanesisches (traditionelles) Chinesisch, das in Big5 codiert ist.
  • Optional ein at-Zeichen @ gefolgt vom Namen einer Variante. Die Bedeutung von Varianten ist vom Gebietsschema abhängig. Beispielsweise haben viele europäische Länder einen @euro Gebietsschemavariante, bei der das Währungszeichen € ist und die Codierung dieses Zeichen enthält (ISO 8859-15 oder ISO 8859-16), im Gegensatz zur schlichten Variante mit dem älteren Währungszeichen. Beispiel:en_IE (Englisch, Irland) verwendet die Codierung latin1 (ISO 8859-1) und £ als Währungssymbol, während [email protected] verwendet die Kodierung Latin9 (ISO 8859-15) und € als Währungssymbol.

Außerdem gibt es zwei Locale-Namen, die auf allen Unix-ähnlichen Systemen existieren:C und POSIX . Diese Namen sind synonym und bedeuten computeresisch, d. h. Standardeinstellungen, die für Daten geeignet sind, die von einem Computerprogramm geparst werden.

Lokale Einstellungen

Die folgenden Locale-Kategorien werden von POSIX definiert:

Verwandte:Wie werden mehrere Hintergrundprozesse zeitlich festgelegt?

GNU libc, die Sie auf nicht eingebettetem Linux finden, definiert zusätzliche Gebietsschemakategorien:

  • LC_PAPER :die Standardpapiergröße (definiert durch Höhe und Breite).
  • LC_NAME , LC_ADDRESS , LC_TELEPHONE , LC_MEASUREMENT , LC_IDENTIFICATION :Mir ist keine Anwendung bekannt, die diese verwendet.

Umgebungsvariablen

Anwendungen, die Gebietsschemaeinstellungen verwenden, ermitteln diese anhand von Umgebungsvariablen.

  • Dann der Wert von LANG Die Umgebungsvariable wird verwendet, sofern sie nicht durch eine andere Einstellung überschrieben wird. Wenn LANG nicht festgelegt ist, ist das Standardgebietsschema C .
  • Der LC_xxx Namen können als Umgebungsvariablen verwendet werden.
  • Falls LC_ALL gesetzt ist, werden alle anderen Werte ignoriert; dies ist hauptsächlich nützlich, um LC_ALL=C zu setzen Ausführen von Anwendungen, die dieselbe Ausgabe erzeugen müssen, unabhängig davon, wo sie ausgeführt werden.
  • Außerdem verwendet GNU libc LANGUAGE um Fallbacks für LC_MESSAGES zu definieren (z. B. LANGUAGE=fr_BE:fr_FR:en belgisches Französisch oder, falls nicht verfügbar, französisches Französisch, oder falls nicht verfügbar, Englisch).

Locales installieren

Gebietsschemadaten können umfangreich sein, daher werden sie von einigen Distributionen nicht in verwendbarer Form ausgeliefert und erfordern stattdessen einen zusätzlichen Installationsschritt.

  • Um unter Debian Locales zu installieren, führen Sie dpkg-reconfigure locales aus und wählen Sie aus der Liste im Dialogfeld aus oder bearbeiten Sie /etc/locale.gen und führen Sie dann locale-gen aus .
  • Um unter Ubuntu Locales zu installieren, führen Sie locale-gen aus mit den Namen der Locales als Argumente.

Sie können Ihr eigenes Gebietsschema definieren.

Empfehlung

Die nützlichen Einstellungen sind:

  • Setzen Sie LC_CTYPE an die Sprache und Codierung an, in der Sie Ihre Textdateien codieren. Stellen Sie sicher, dass Ihre Terminals diese Codierung verwenden.
    Für die meisten Sprachen ist nur die Codierung von Bedeutung. Es gibt ein paar Ausnahmen; zum Beispiel ein großes i ist I in den meisten Sprachen, aber İ auf Türkisch (tr_TR ).
  • Setzen Sie LC_MESSAGES auf die Sprache, in der Sie Nachrichten sehen möchten.
  • Setzen Sie LC_PAPER zu en_US wenn Sie möchten, dass US Letter das Standardpapierformat ist und so ziemlich alles andere (z. B. en_GB ), wenn Sie A4 möchten.
  • Legen Sie optional LC_TIME fest in Ihr bevorzugtes Zeitformat.
Verwandt:Benutzer1 „su – user2“ ohne Passwort erlauben?

Wie oben erklärt, vermeiden Sie die Einstellung von LC_COLLATE und LC_NUMERIC . Wenn Sie LANG verwenden , überschreiben Sie diese beiden Kategorien explizit, indem Sie sie auf C setzen .


Linux
  1. Was sind Zombie-Prozesse und wie findet und tötet man Zombie-Prozesse?

  2. So finden Sie heraus, wer auf Ihrem System angemeldet ist und was er tut

  3. Was sind die Kontroll- und Umleitungsoperatoren der Shell?

  4. Linux – Wie finde ich heraus, welche Festplatten im System sind?

  5. Was sind die Unterschiede zwischen rdesktop und xfreerdp?

Was ist ein hübscher Hostname und wie wird er eingerichtet?

Was ist Intel SGX und was sind die Vorteile?

Was sind Snaps und wie wird es auf verschiedenen Linux-Distributionen installiert?

So installieren und konfigurieren Sie SeedDMS

So richten Sie den Pretty Hostnamen ein

Wie sind CPU-Zeit und CPU-Auslastung gleich?