So fügen Sie macOS Catalina ein neues Gebietsschema hinzu

Wenn ich in den Systemeinstellungen, Sprache und Region das Vereinigte Königreich auswähle, localeist die Ausgabe von

LANG="en_GB"
LC_COLLATE="en_GB"
LC_CTYPE="en_GB"
LC_MESSAGES="en_GB"
LC_MONETARY="en_GB"
LC_NUMERIC="en_GB"
LC_TIME="en_GB"
LC_ALL=

Wenn ich aber Norwegen auswähle geht das aus

LANG="en_NO"
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

Ich vermute, dass dies der Grund ist, warum Befehle wie lsDatumsangaben im mon dateFormat anstelle von anzeigen date mon, selbst wenn Norwegisch letzterem folgt. locale -a | grep en_NOzeigt nichts und ich denke, das ist der Grund. Also habe ich versucht, es nach meinen Bedürfnissen zu kopieren /usr/share/locale/no_NOund /usr/share/locale/en_NOzu ändern, und natürlich erhalte ich, mkdir: en_NO: Operation not permittedweil das Systemvolume als schreibgeschützt auf Catalina gemountet ist. Gibt es also eine Möglichkeit, mein eigenes Gebietsschema hinzuzufügen?

Würden Sie export LC_TIME="en_GB.UTF-8"etc. in Ihre Arbeit einbauen ?~/.zshrc
Aus irgendeinem Grund funktioniert es nicht, egal was mir localeimmer wieder angezeigt wird . Außerdem wollte ich alle Werte für from bekommenLC_TIMECLC_*defaults read NSGlobalDomain AppleLocale
Sie müssen source ~/.zshrcein neues Terminal-Emulator-Fenster ausführen oder öffnen, nachdem Sie die Datei geändert haben ...
Ja, das weiß ich. Eigentlich verwende ich ZSH nicht, ich verwende Fish als meine Shell, und es ist bereits ziemlich angepasst und alles funktioniert wie erwartet, außer diesem

Antworten (2)

Ich weiß nicht, ob Ihr Problem mit meinem identisch war, aber das hat zumindest bei mir funktioniert. Ich habe auch bemerkt, dass mein System versucht hat, nb_no.UTF-8 anstelle von no.NO zu setzen (und fehlschlug).

  1. vim ~/.config/fish/config.fish
  2. set -x LC_ALL no_NO.UTF-8
Nicht dasselbe, ich möchte en_NO, mit ist im System nicht verfügbar, also ist die Frage, wie man es zuerst hinzufügt

Verfahren aus meinem Kochbuch, um ein neues Gebietsschema hinzuzufügen

Dies funktioniert unter MacOS 12.5 Monterrey über Macs mit SIP (System Integrity Protection), M1-Chip:

Prüfen Sie zunächst, ob Regionalität im System vorhanden ist:

locale -a | grep en_NO

Wenn es keine Ergebnisse gibt, gibt es keine Regionalität. Es hat keinen Sinn, eine Kopie zu erstellen, da das Root-Verzeichnis schreibgeschützt eingehängt ist und SIP Ihnen nicht erlaubt, es zu ändern. Es besteht zwar die Möglichkeit, darauf zu schreiben, aber es wird nicht möglich sein, SIP erneut zu verwenden, damit die Änderungen bestehen bleiben. localedef funktioniert auch nicht. Die Lösung besteht darin, einen Home-Ordner zu erstellen und den Pfad zu ändern, in dem glibc nach den Gebietsschemata sucht:

mkdir ~/.locale
cp -rpf /usr/share/locale/en_GB.UTF-8 ~/.locale/en_NO.UTF-8
export PATH_LOCALE=~/.locale
export LC_ALL=en_NO.UTF-8

Jetzt hat das System die entsprechende Regionalität. Damit Änderungen im Terminal dauerhaft wirksam werden, könnten der Datei ˜/.profile folgende Zeilen hinzugefügt werden:

export PATH_LOCALE=~/.locale
export LC_ALL=en_NO.UTF-8

Wenn andererseits das Gebietsschema auf dem System vorhanden ist (wenn das Gebietsschema -a | grep en_kein Ergebnis zurückgibt), wird nur Folgendes erreicht:

export LC_ALL=en_NO.UTF-8

Genauso kann diese Zeile in ˜/.profile stehen. In meinem Fall verwende ich es_AR basierend auf dem Gebietsschema, das vom System es_ES bereitgestellt wird. Es ist die sauberste Lösung (und ich denke die richtige), die ich bisher gefunden habe, ohne in das System einzugreifen.

Ist /usr/local/share/localeeine Alternative zu einer benutzerspezifischen Installation?
@gidds Ja, es ist auch eine gute Alternative. Ist zwar für ganze Benutzer, nicht für benutzerspezifische.