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
- Ein Texteditor. Jeder wird es tun, obwohl VIM sich auszeichnen wird.
- 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.
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.
-
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 wobeicustom
ist der Name Ihres Gebietsschemas. -
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 Befehlsudo cp locale /usr/share/i18n/locales/
tun wobeilocale
ist der Dateiname Ihres benutzerdefinierten Gebietsschemas. -
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 Zeilecustom UTF-8
hinzu , wobei custom der Name Ihres Gebietsschemas ist. -
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. -
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 zuerstlocale
aus Befehl. Es sollte eine Liste mit Einträgen wieLANGUAGE
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 diesenSECTION="locale"
wobeiSECTION
ist der Abschnitt undlocale
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.
Bitte kommentieren Sie Ungereimtheiten oder falsche Aussagen in diesem Leitfaden!