it-swarm.com.de

Wie kann ich ein Systemgebietsschema anpassen?

Bei System Administration Sprachunterstützung Text. Ich kann nur Standard-Gebietsschemas auswählen, möchte aber 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 tun?

23
Ivan

Diese Antwort zeigt, wie ein Gebietsschema vollständig angepasst werden kann, wobei optional ein vorhandenes Gebietsschema als Basis verwendet wird. Der Typ des Gebietsschemas, der in dieser Antwort verwendet wird, ist der Typ i18n; Diese Art von Gebietsschema wird bei jeder Erwähnung des Wortes "Gebietsschema" im Hauptteil der Antwort impliziert.

Finde einen Führer

Um ein Gebietsschema anzupassen, müssen Sie zunächst das Format des Gebietsschemas kennen. Dieser Web-Gebietsschema-Editor enthält eine umfassende Beschreibung aller Felder eines Gebietsschemas, obwohl sie nicht sofort von allen Benutzern verwendet werden können. Dies wird die zu verwendende Anleitung sein.

Benötigte Werkzeuge

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

  1. Ein Texteditor. Jeder wird es tun, obwohl VIM exzellent sein wird.
  2. Ein Text-zu-Unicode-Konverter. Es wird am meisten erwartet, dass Sie keinen hatten, also werde ich Ihnen einen einfachen zur Verfügung stellen. 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 zusammenhängt, die Sie am Gebietsschema ausführen werden.

Text-zu-Unicode-Konverter (encodestr)

HINWEIS: Wenn Sie ungewöhnliche Zeichen verwenden, können Probleme auftreten mit dem Skript schreibe ich unten; Vielleicht möchten Sie sich die alternativen Skripte ansehen, die mit nass verknüpft 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. In diesem Handbuch wird davon ausgegangen, dass Sie das Skript encodestr aufgerufen haben.

#!/usr/bin/python

def encode(string):
    newstring = str()
    for ch in string:
        newstring += "<U%04X>" % ord(ch)
    return newstring

if __== '__main__':
    import sys
    print encode(sys.argv[1])

Nachdem Sie es gespeichert haben, geben Sie die Dateiausführungserlaubnis - dies wird nützlich sein. Sie können dies mit nautilus tun oder den folgenden Befehl von einem Terminal aus 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 in demselben Verzeichnis ausführen: ./encodestr hello. Sie sollten eine Ausgabe gleich <U0068><U0065><U006C><U006C><U006F> erhalten.

Ändern Sie ein vorhandenes Gebietsschema

Das Ändern eines vorhandenen Gebietsschemas ist der einfachste Fall, da Sie im Idealfall ein Gebietsschema auswählen, das Ihren Anforderungen fast vollständig entspricht. In diesem Fall müssen Sie nur geringfügige Änderungen vornehmen. Zum Anpassen können Sie anhand der Anleitung ermitteln, welche Abschnitte Sie ändern möchten und wie Sie sie ändern können. Alle installierten Gebietsschemas befinden sich in /usr/share/i18n/locales, aber das Handbuch enthält so ziemlich jedes Gebietsschema, das jemals erstellt wurde.

Das Erste, was Sie jedoch bemerken, wenn Sie ein Gebietsschema öffnen, ist, dass Sie englische Wörter so oft lesen wie seltsame <UXXXX> Codes. Sie müssen in der Lage sein, diese Codes zu erstellen - hier kommt das Skript encodestr.

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

Beispielsweise enthält der Abschnitt LC_TIME das Feld t_fmt und viele andere. Jedes Feld hat eine eigene Beschreibung am der Leitfaden .

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

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

Wenn Sie wissen, was Sie in die Felder schreiben müssen, die Sie ändern möchten, führen Sie den Text über das Skript encodestr aus, um dessen codiertes Äquivalent zu erhalten.

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

Wenn Sie beispielsweise das Zeitformat Time: %T im Feld t_fmt haben möchten, führen Sie ./encodestr "Time: %T" aus. Dies gibt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054> zurück und so haben Sie die Zeile t_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054> in Ihrem Gebietsschema (in dem entsprechenden Abschnitt natürlich).

Nachdem Sie alle gewünschten Felder geändert haben, müssen Sie fortfahren, um das Gebietsschema auf dem System zu installieren, damit es verwendet werden kann. Fahren Sie dazu mit dem Installationsabschnitt fort.

Erstellen eines Gebietsschemas von Grund auf neu

Im Gegensatz zum Ändern eines Gebietsschemas können Sie das Gebietsschema auch mit einer anderen Methode von Grund auf neu erstellen. 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 kopieren, ohne die tatsächlichen Methoden zum Kopieren und Einfügen zu verwenden. Sie müssen nur dieses Format befolgen:

LC_SECTION
copy "locale"
END LC_SECTION

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

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

LC_TIME
copy "en_GB"
END LC_TIME

Das erspart Ihnen viel Arbeit und stellt sicher, dass alle Änderungen am referenzierten Gebietsschema für Sie übernommen werden.

Installieren Ihres benutzerdefinierten Gebietsschemas

Die Schritte, die ich unten zeigen werde, sind möglicherweise nicht optimal, funktionieren aber.

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

  2. Kopieren Sie Ihr Gebietsschema in das Verzeichnis /usr/share/i18n/locales/. Sie benötigen auf jeden Fall Sudo -Privilegien, und Sie können dies mit dem Befehl Sudo cp locale /usr/share/i18n/locales/ tun, wobei locale der Dateiname Ihres benutzerdefinierten Gebietsschemas ist.

  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 Zauberbefehl aus. Ich weiß eigentlich nicht genau, was dieser Befehl tut, aber es ist entscheidend. Führen Sie Sudo locale-gen aus. Es ist sehr wahrscheinlich, dass Referenzen zu den verfügbaren Gebietsschemas generiert werden, wenn dies erforderlich 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. Wenn nicht, können Sie Ihre ~/.profile -Datei oder eine andere Datei ändern, die beim Start erstellt wird. Wenn Sie nicht wissen, was letzteres bedeutet, machen Sie sich keine Sorgen, verwenden Sie einfach die Datei ~/.profile. Um zu wissen, was Sie darin schreiben müssen, führen Sie zuerst den Befehl locale aus. Es sollte eine Liste mit Elementen wie LANGUAGE, LC_MESSAGES, LC_CTYPE und vielen anderen ausgeben. Sie schreiben für jeden der Abschnitte, die Sie möchten (aufgelistet durch den vorherigen Befehl), diesen SECTION="locale" in separate Zeilen, wobei SECTION der Abschnitt und locale der Name Ihres benutzerdefinierten Gebietsschemas ist .

Wenn Sie beispielsweise das Zeitformat aus den Niederlanden, aber die englische 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, geben Sie LC_ALL="locale" ein, wobei locale der Name Ihrer Benutzerdefinition ist Gebietsschema. Wenn Sie ein Gebietsschema für alles außer für die Sprache verwenden möchten, können Sie LANG="locale" und (natürlich in einer anderen Zeile) LANGUAGE="locale":XX schreiben, wobei XX der 2-Buchstaben-Code für die Sprache ist Sie wollen.

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"

Du bist fertig

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

Bitte kommentieren Sie Inkonsistenzen oder falsche Angaben in diesem Handbuch!

27
Severo Raz

Sie sind sich nicht sicher, welche Art von Anpassung Sie wünschen, aber Sie können einige Gebietsschemavariablen mit Ihrem ~/.locale festlegen. Zum Beispiel, um englische Nachrichten zu bekommen, aber deutsche Zeit und dergleichen, die ich benutze

export LC_ALL=""
export LANG="en_GB.utf8"
export LC_CTYPE="de_DE.utf8"
export LC_NUMERIC="de_DE.utf8"
export LC_TIME="de_DE.utf8"
export LC_COLLATE="de_DE.utf8"
export LC_MONETARY="de_DE.utf8"
export LC_MESSAGES="en_GB.utf8"
export LC_PAPER="de_DE.utf8"
export LC_NAME="en_GB.utf8"
export LC_ADDRESS="de_DE.utf8"
export LC_TELEPHONE="de_DE.utf8"
export LC_MEASUREMENT="de_DE.utf8"
export LC_IDENTIFICATION="de_DE.utf8"

Das Generieren von benutzerdefinierten Gebietsschemas ist ebenfalls möglich. Siehe z. diese Anleitung für Termine.

8
Carsten Thiel