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

Wie passe ich ein Systemgebietsschema an?

Unter System Verwaltung Sprachunterstützung Text. Ich kann nur Standard-Gebietsschemas auswählen, aber ich würde gerne eine Feinabstimmung vornehmen. Zum Beispiel könnte ich in Windows Dinge wie Zeit- und Datumsformat, Maßeinheiten, Dezimaltrennzeichen, Währung usw. manuell anpassen – wie kann ich das in Ubuntu machen?

Beste Antwort

Diese Antwort zeigt, wie Sie ein Gebietsschema vollständig anpassen können, optional unter Verwendung eines vorhandenen Gebietsschemas als Basis. Der Gebietsschematyp, der in dieser Antwort verwendet wird, ist i18n Typ; eine solche Art von Gebietsschema wird bei jeder Erwähnung des Wortes „Gebietsschema“ im Hauptteil der Antwort impliziert.

Eine Anleitung finden

Das erste, was Sie zum Anpassen eines Gebietsschemas benötigen, ist, sich mit dem Format des Gebietsschemas vertraut zu machen. Dieser Web-Gebietsschema-Editor enthält eine umfassende Beschreibung aller Felder in einem Gebietsschema, obwohl es nicht von jedem sofort verwendet werden kann. Dies ist die Anleitung zur Verwendung.

Benötigte Werkzeuge

Die einzigen Tools, die Sie zum Arbeiten mit Gebietsschemata benötigen, sind

  1. Ein Texteditor. Jeder wird es tun, obwohl VIM sich auszeichnen wird.
  2. Ein Text-zu-Unicode-Konverter. Es würde am meisten erwartet werden, dass Sie keinen haben, also werde ich Ihnen einen einfachen geben. Lesen Sie den nächsten Unterabschnitt, um es zu erhalten.

Ich empfehle Ihnen, ein Verzeichnis zu erstellen und alles zu speichern, was mit der Arbeit zu tun hat, die Sie mit dem Gebietsschema machen werden.

Text-zu-Unicode-Konverter (encodestr)

HINWEIS: wenn Sie nicht gebräuchliche Zeichen verwenden Möglicherweise haben Sie Probleme mit dem Skript, das ich unten schreibe. Vielleicht möchten Sie einen Blick auf die alternativen Skripte werfen, die von nass verlinkt sind .

Speichern Sie den folgenden Code in einer Datei. Diese Datei wird von Ihrem System als Python-Skript identifiziert, was in Ordnung ist, weil es eines ist. Diese Anleitung geht davon aus, dass Sie das Skript encodestr genannt haben .

#!/usr/bin/env python3

import sys

def main():
    if len(sys.argv) != 2:
        exit(f'Usage: {sys.argv[0]} <string to encode>')
    print(encode(sys.argv[1]))

def encode(s):
    return ''.join(f"<U{ord(c):04X}>" for c in s)

if __name__ == '__main__':
    sys.exit(main())

Nachdem Sie es gespeichert haben, geben Sie der Datei die Ausführungsberechtigung – das wird sich als nützlich erweisen. Sie können dies mit Nautilus tun oder indem Sie von einem Terminal aus den folgenden Befehl in dem Verzeichnis ausführen, in dem Sie das Skript gespeichert haben:chmod +x encodestr .

Sie können dieses Skript jetzt testen, indem Sie es im selben Verzeichnis ausführen:./encodestr hello . Sie sollten eine Ausgabe gleich <U0068><U0065><U006C><U006C><U006F> erhalten .

Vorhandenes Gebietsschema ändern

Das Ändern eines vorhandenen Gebietsschemas ist der einfachste Fall, da Sie idealerweise ein Gebietsschema auswählen, das Ihren Anforderungen fast vollständig entspricht. In diesem Fall müssen Sie nur kleine Änderungen vornehmen. Um es anzupassen, können Sie den Leitfaden verwenden, um zu erfahren, welche der Abschnitte Sie ändern möchten und wie Sie sie ändern können. Alle installierten Locales befinden sich in /usr/share/i18n/locales , jedoch enthält der Leitfaden so ziemlich alle jemals erstellten Locales.

Das erste, was Sie jedoch bemerken werden, wenn Sie ein Gebietsschema öffnen, ist, dass Sie sowohl englische Wörter als auch seltsame <UXXXX> lesen werden Codes. Sie müssen in der Lage sein, diese Codes zu erstellen – hier ist der encodestr Skript kommt.

Wenn Sie wissen, welche Abschnitte Sie ändern müssen, müssen Sie jedes in dem Abschnitt enthaltene Feld kennen.

Beispiel:LC_TIME enthält das Feld t_fmt , und viele andere. Jedes Feld hat seine eigene Beschreibung im Handbuch.

Nachdem Sie nun wissen, welche Felder geändert werden müssen, verwenden Sie die Anleitung erneut, um herauszufinden, welche Werte das Feld akzeptiert.

Beispielsweise das Feld t_fmt akzeptiert Text und die üblichen strfmt-Variablen.

Gerade wenn Sie wissen, was Sie in die Felder schreiben müssen, die Sie ändern möchten, lassen Sie den Text durch den encodestr laufen Skript, um sein codiertes Äquivalent zu erhalten.

Verwandte:Wie führe ich eine Anwendung für eine festgelegte Zeit in der Shell aus?

HINWEIS: Nicht jedes Feld muss codiert werden, verwenden Sie bei Bedarf ein vorhandenes Gebietsschema als Referenz.

Zum Beispiel, wenn Sie das Zeitformat Time: %T haben möchten im t_fmt führen Sie ./encodestr "Time: %T" aus; Dadurch wird <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054> zurückgegeben und so erhalten Sie die Zeile t_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054> in Ihrem Gebietsschema (natürlich im entsprechenden Abschnitt).

Nachdem Sie alle gewünschten Felder geändert haben, müssen Sie mit der Installation des Gebietsschemas auf dem System fortfahren, damit es verwendet werden kann. Fahren Sie dazu mit dem Installationsabschnitt fort.

Ein Gebietsschema von Grund auf neu erstellen

Im Gegensatz zum Ändern eines, besteht die andere Methode, die Sie zum Erstellen Ihres benutzerdefinierten Gebietsschemas verwenden können, darin, von Grund auf neu daran zu arbeiten. Dies ist nicht sehr schwierig, wenn Sie – wieder – die Anleitung verwenden. Hier ist jedoch ein nützlicher Tipp:Sie können Abschnitte aus anderen Gebietsschemas ohne tatsächliches Kopieren und Einfügen kopieren Methoden. Sie müssen nur diesem Format folgen:

LC_SECTION
copy "locale"
END LC_SECTION

Wobei LC_SECTION ist der Abschnitt, den Sie ändern möchten, und locale ist das Gebietsschema, aus dem Sie diesen Abschnitt kopieren möchten.

Wenn Sie beispielsweise das Zeitformat in das englische Gebietsschema kopieren möchten, haben Sie diesen Text in Ihrer benutzerdefinierten Gebietsschemadatei:

LC_TIME
copy "en_GB"
END LC_TIME

Und das erspart Ihnen eine Menge Arbeit und stellt sicher, dass jede Änderung, die an der referenzierten Locale vorgenommen wird, in Ihrer gespiegelt wird.

Installieren Ihres benutzerdefinierten Gebietsschemas

Die Schritte, die ich unten zeigen werde, sind vielleicht nicht optimal, aber funktionieren.

  1. Kompilieren Sie Ihr Gebietsschema. Keine Panik! Das dauert keine Zeit. Führen Sie einfach den Befehl sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v aus wobei custom ist der Name Ihres Gebietsschemas.

  2. Kopieren Sie Ihr Gebietsschema nach /usr/share/i18n/locales/ Verzeichnis. Sie benötigen auf jeden Fall sudo Berechtigungen, um dies zu tun, und Sie können dies mit dem Befehl sudo cp locale /usr/share/i18n/locales/ tun wobei locale ist der Dateiname Ihres benutzerdefinierten Gebietsschemas.

  3. Geben Sie Ihr Gebietsschema in /var/lib/locales/supported.d/ an . Erstellen Sie beispielsweise einen Dateinamen /var/lib/locales/supported.d/asd und fügen Sie die Zeile custom UTF-8 hinzu , wobei custom der Name Ihres Gebietsschemas ist.

  4. Führen Sie den magischen Befehl aus. Ich weiß eigentlich nicht, was genau dieser Befehl macht, aber er ist entscheidend. Führen Sie sudo locale-gen aus . Es ist sehr wahrscheinlich, dass es Verweise auf die verfügbaren Gebietsschemas generiert, wo es nötig ist.

  5. Weisen Sie Ihr System an, das Gebietsschema zu verwenden. Wenn Sie möchten, dass das Gebietsschema systemweit verwendet wird, ändern Sie die Datei /etc/environment Datei. Wenn nicht, können Sie Ihr ~/.profile ändern Datei oder eine andere, die beim Start bezogen wird. Wenn Sie nicht wissen, was letzteres bedeutet, machen Sie sich keine Sorgen, verwenden Sie einfach den ~/.profile Datei. Um zu wissen, was Sie darin schreiben müssen, führen Sie zuerst locale aus Befehl. Es sollte eine Liste mit Einträgen wie LANGUAGE ausgeben , LC_MESSAGES , LC_CTYPE und viele andere. Sie schreiben für jeden der gewünschten Abschnitte (aufgelistet durch den vorherigen Befehl) in separate Zeilen diesen SECTION="locale" wobei SECTION ist der Abschnitt und locale der Name Ihres benutzerdefinierten Gebietsschemas.

Wenn Sie beispielsweise das Zeitformat aus den Niederlanden, aber in englischer Sprache verwenden möchten, schreiben Sie:

LANGUAGE="en_GB:en"
LC_TIME="nl_NL"

HINWEIS: Wenn Sie ein Gebietsschema für jede Gebietsschemaeinstellung verwenden möchten, schreiben Sie LC_ALL="locale" wobei locale ist der Name Ihres benutzerdefinierten Gebietsschemas. Wenn Sie ein Gebietsschema für alles außer für die Sprache verwenden möchten, können Sie LANG="locale" schreiben und (natürlich in einer anderen Zeile) LANGUAGE="locale":XX wobei XX ist der 2-Buchstaben-Code für die gewünschte Sprache.

Wenn Sie beispielsweise das niederländische Gebietsschema und die englische Sprache verwenden möchten, können Sie Folgendes verwenden:

LANG="nl_NL"
LANGUAGE="nl_NL:en"

Sie sind fertig

Wenn Sie sich das nächste Mal anmelden, sollte Ihr Gebietsschema verwendet werden. Sie können dies testen, indem Sie locale ausführen Befehl erneut.

Verwandte:Iptables – Tabellenfilter kann nicht initialisiert werden?

Bitte kommentieren Sie Ungereimtheiten oder falsche Aussagen in diesem Leitfaden!


Ubuntu
  1. So installieren Sie Ruby unter Windows 10

  2. So ändern Sie ein Systemgebietsschema unter RHEL7 Linux

  3. So installieren Sie Gradle unter Ubuntu 18.04

  4. So richten Sie das Systemgebietsschema unter CentOS 7 ein

  5. So richten Sie das Systemgebietsschema unter Ubuntu 16.04 ein

So fügen Sie Ubuntu einen Drucker hinzu

So installieren Sie Ubuntu neu

So installieren Sie urBackup auf Ubuntu 20.04

So installieren Sie Dropbox unter Ubuntu 18.04 und 16.04

Verstehen, wie ein E-Mail-System funktioniert

Anpassen von Cinnamon Desktop in einem Linux-System