Vorbemerkung : Diese Frage ist nicht über Einstellung eines locale durch Ändern LC_ALL
, LC_TIME
, LANG
etc., ist es vielmehr um eine locale Ändern Definition , zB in /usr/share/i18n/locales/de_DE
bzw. auf Vorschläge über geeignetere Möglichkeiten zu bekommen , als diese die Systemeinstellungen ändern.
Die Absicht ist zu erhalten ISO Zeit Darstellungen %Y-%m-%d
und %H:%M:%S
ohne unerwünschte Nebenwirkungen.
Vorschläge, die ich im Internet gefunden habe, waren noch alle unangemessen (z. B. wenn Sie das Gebietsschema auf "dänisch" setzen, werden die buchstabierten Wochentagsnamen der Muttersprache nicht beibehalten).
Die einzige Möglichkeit, die ich derzeit sehe, um das gewünschte Verhalten zu erzielen, besteht darin, die Definition meines nativen Gebietsschemas in zu ändern /usr/share/i18n/locales/de_DE
. Dies ist keine perfekte Lösung, da bei Systemaktualisierungen diese geänderten Dateien möglicherweise erneut überschrieben werden.
Meine Fragen sind:
- Gibt es bessere Optionen für das Gebietsschema, um die gewünschte Funktion zu erhalten, als die spezifische Systemgebietsschemadatei zu ändern?
- Gibt es Probleme beim Ändern einer bestimmten Gebietsschema-Definitionsdatei? (Und wie kann verhindert werden, dass diese Datei bei Systemaktualisierungen überschrieben wird?)
- Wäre es besser, eine neue spezifische Variante einer vorhandenen Gebietsschemadatei zu definieren und diese in den
LC_*
Einstellungen zu verwenden? (Und wie würde diese neue Datei / Definition dem System korrekt bekannt gemacht?) - Irgendwelche anderen Vorschläge?
en_XX
- Ich weiß nicht, welche Einschränkungen hier bestehen, Versuch und Irrtum könnten ausreichen) und die gewünschten Änderungen daran vornehmen und verwenden Sie es als Gebietsschema. Sie müssen die Liste oder was auch immer danach neuLC_TIME
(in/etc/environment
oder/etc/default/locale
oder/etc/locale.conf
abhängig von der Distribution) das geänderte Gebietsschema ein (ich habe meins genanntisodate.UTF-8
) und das entsprechende Format wird nur für Zeit / Datum aus diesem benutzerdefinierten Gebietsschema ausgewählt. Auf diese Weise habe ich meine ansonsten eingestellteen_US
Einstellung so angepasst , dass ISO-Datum / Uhrzeit angezeigt werden./var/lib/locales/supported.d/local
(oder eine der anderen Dateien dort)dpkg-reconfigure locales
eingeben und als Superuser für die zu kompilierende Gebietsschema-Definition ausführen . Und ja, die EinstellungLC_TIME
auf ein benutzerdefiniertes Gebietsschema scheint die am wenigsten aufdringliche Methode zu sein, die ich bisher gesehen habe. Aus diesem Grund verfügt Ihr System über globale Einstellungen,LC_TIME
die sich vom "Gesamtgebietsschema" unterscheiden können.copy
On-Section-Ansatz verwenden oder andere Abschnitte redundant halten soll (damit ichdiff
gegen die Originaldatei vorgehen kann ).Antworten:
In einer kürzlich gestellten Frage habe ich gefragt, was die beste Vorgehensweise für diese Art von Änderung ist. Es gab noch keine Antwort. Ich kann Ihnen jedoch das Rezept geben, das ich verwende und das sich als gut erwiesen hat. Alle Programme erfassen das Datum korrekt.
Meine Beschreibung ist für Ubuntu, wird aber wahrscheinlich unter Debian und Mint funktionieren.
Vorbereitungen
Kopieren Sie das Gebietsschema, aus dem Sie anpassen möchten,
/usr/share/i18n/locales
in eine neue Datei. Z.BPassen Sie alle mit Ausnahme der
LC_TIME
Abschnitte an:Passen Sie den
LC_TIME
Abschnitt an Ihr gewünschtes Ergebnis an. Sie können die Einstellungen aus meiner oben verlinkten Frage als Vorlage verwenden. Es sieht so aus, als ob dies ziemlich genau das ist, was Sie wollen.Wenn Ihr Gebietsschema die "AM / PM" -Notation nicht verwendet, setzen Sie diese auf leer:
Dem System bekannt machen
Bearbeiten Sie die Datei
/var/lib/locales/supported.d/local
und fügen Sie dort die Informationen zu Ihrer Gebietsschema-Definition hinzu. Fügen Sie also eine Zeile wie diese hinzu, wenn Ihr Dateiname oben warisodate
, und passen Sie sie anders an:Wenn
/var/lib/locales/supported.d/local
nicht vorhanden, erstellen Sie eine Datei mit diesem Namen. Legen Sie Ihre Änderungen nicht in der entsprechendenen
oderde
Datei in diesem Ordner ab, da diese möglicherweise überschrieben werden, sobald die Paketelanguage-pack-*-base
undlanguage-pack-*
auf Ihrem System ein Update erhalten.Führen Sie jetzt aus
dpkg-reconfigure locales
:In Ihrem Fall zeigt dies an, dass das
de_DE.UTF-8@isodate
Gebietsschema generiert wurde (vorausgesetzt, Sie haben keine Syntaxprobleme).Zu guter Letzt fügen Sie Folgendes hinzu
/etc/default/locale
:Dadurch wird sichergestellt, dass nur
LC_TIME
das mit definierte Standardgebietsschema überschrieben wirdLANG
.Melden Sie sich erneut an und Sie sollten in der Lage sein, das neue ISO-Datum / die neue ISO-Uhrzeit zu sehen, wenn Sie
date
oder andere Tools verwenden, die die entsprechende libc-Laufzeitfunktion verwenden.Die Absicht hier ist, die am wenigsten aufdringliche Änderung vorzunehmen, ohne gleichzeitig gegen das System zu arbeiten (z. B. gegen Paketmanager und Freunde). Natürlich können Sie auch einfach eine Kopie Ihres Gebietsschemas erstellen, es auf ähnliche Weise wie oben beschrieben installieren und dann anpassen
LANG
. Der Punkt ist, solange Sie das Risiko von Änderungen durch eine Paket - Update überschrieben nicht ausführen möchten, Sie haben eine angepasste Kopie zu verwenden (was auch immer die individuell gestaltet werden Sie gehen, das heißtcopy
oder einfach die Abschnitte halten , wie sie waren in das Original). Und ob SieLANG
auf die vollständige benutzerdefinierte Gebietsschemadefinition verweisen - oder ob Sie hinzufügenLC_TIME
Wenn Sie nur auf den entsprechenden benutzerdefinierten Abschnitt mit demselben Namen einer benutzerdefinierten Gebietsschema-Definitionsdatei verweisen, können Sie eine der globalen Einstellungen nicht anpassen.quelle
en_US.UTF-8@isodate
.copy
dasLC_IDENTIFICATION
und wie würde das Auswirkungen auf die Benennung der Dateien und wie Sie mit den Lokalisierungs verweisen/etc/default/locale
und/var/lib/locales/supported.d/local
jeweils? Können Sie sagen?en_US@isodate
Definitionsdatei erstellen und verwendenlocaledef
, um die richtigen Dateien zu erstellen. Weitere Informationen finden Sie unter sourceware.org/git/?p=glibc.git;a=blob;f=localedata/README (und sourceware.org/git/?p=glibc.git;a=blob;f=localedata/locales/). … Zum Beispiel).localedef -i en_US@isodate -f UTF-8 en_US.UTF-8@isodate
: Ich bin mir bei der Debian-spezifischen Konfiguration nicht sicher. Mein Kommentar war hauptsächlich, wie um das Gebietsschema zu benennen./usr/local/share/i18n/locales
hinzufügen, die unterstützten Gebietsschema / Charmap-Paare hinzufügen/usr/local/share/i18n/SUPPORTED
und ausführendpkg-reconfigure locales
(siehe auch/etc/locale.gen
).