Remarque préliminaire : Cette question est pas à propos de la mise en un lieu en changeant LC_ALL
, LC_TIME
, LANG
, etc., il est plutôt de changer une locale définition , par exemple dans /usr/share/i18n/locales/de_DE
, respectivement, pour obtenir des suggestions sur les options plus appropriées que de changer les paramètres du système.
L' objectif est d'obtenir des représentations ISO du temps %Y-%m-%d
et %H:%M:%S
sans effets secondaires indésirables.
Les suggestions que j'ai trouvées sur le net étaient encore toutes inappropriées (par exemple, définir les paramètres régionaux sur "danois" ne conservera pas les noms de semaine orthographiés de la langue maternelle).
Maintenant, le seul choix que je vois actuellement pour obtenir le comportement souhaité est de modifier la définition de mes paramètres régionaux natifs dans /usr/share/i18n/locales/de_DE
. Ce n'est pas une solution parfaite car avec les mises à jour du système, ces fichiers modifiés peuvent être écrasés à nouveau.
Mes questions sont:
- Existe-t-il de meilleures options liées aux paramètres régionaux pour obtenir la fonction souhaitée que de modifier le fichier de paramètres régionaux du système spécifique?
- Y a-t-il des problèmes à prévoir lors de la modification d'un fichier de définition de paramètres régionaux spécifique? (Et comment éviter que ce fichier soit écrasé en cas de mise à jour du système?)
- Serait-il préférable de définir une nouvelle variante spécifique d'un fichier de paramètres régionaux existant et de l'utiliser dans les
LC_*
paramètres? (Et comment ce nouveau fichier / définition serait-il correctement communiqué au système?) - D'autres suggestions?
en_XX
- je ne sais pas quelles sont les restrictions ici, des essais et des erreurs peuvent suffire), apportez les modifications que vous souhaitez et utilisez-le comme paramètre régional. Vous devrez régénérer la liste ou autre chose par la suite, etc.LC_TIME
(dans/etc/environment
ou/etc/default/locale
ou en/etc/locale.conf
fonction de la distribution) les paramètres régionaux modifiés (j'ai appelé le mienisodate.UTF-8
) et le format respectif sera sélectionné à partir de ces paramètres régionaux personnalisés uniquement pour l'heure / la date. C'est ainsi que j'ai personnalisé mon autreen_US
paramètre pour afficher la date / heure ISO./var/lib/locales/supported.d/local
(ou l'un des autres fichiers) et exécuter endpkg-reconfigure locales
tant que superutilisateur pour la définition de la locale à compiler. Et oui, le réglageLC_TIME
pour pointer vers un environnement local personnalisé semble être la méthode la moins intrusive de tout ce que j'ai vu jusqu'à présent. C'est pourquoi votre système a des paramètres globaux quiLC_TIME
peuvent être définis différemment des "paramètres régionaux généraux".copy
approche on sections, ou garder les autres sections redondantes (afin de pouvoirdiff
contre le fichier d'origine).Réponses:
Dans une question récente, j'ai demandé quelle était la meilleure pratique pour ce type de changement. Il n'y avait pas encore de réponse. Cependant, je peux vous donner la recette que j'utilise, qui s'est avérée très efficace. Tous les programmes prennent correctement la date.
Ma description concerne Ubuntu, mais fonctionnera probablement sur Debian et Mint.
Les préparatifs
Copiez les paramètres régionaux que vous souhaitez personnaliser
/usr/share/i18n/locales
dans un nouveau fichier. Par exempleAjustez tout à l'exception des
LC_TIME
sections pour:Ajustez la
LC_TIME
section pour qu'elle corresponde au résultat souhaité. Vous pouvez utiliser les paramètres de ma question liée ci-dessus comme modèle. Il semble que c'est à peu près exactement ce que vous voulez.Si vos paramètres régionaux n'utilisent pas la notation "AM / PM", définissez-les sur vide:
Faire connaître le système
Modifiez le fichier
/var/lib/locales/supported.d/local
et ajoutez-y les informations sur votre définition de paramètres régionaux. Autrement dit, ajoutez une ligne comme celle-ci si le nom de votre fichier ci-dessus étaitisodate
, ajustez-le autrement:S'il
/var/lib/locales/supported.d/local
n'existe pas, créez un fichier de ce nom. Ne placez pas vos modifications dans le fichier respectifen
oude
dans ce dossier, car elles peuvent être écrasées dès que les packageslanguage-pack-*-base
etlanguage-pack-*
sur votre système reçoivent une mise à jour.Maintenant, lancez
dpkg-reconfigure locales
:Dans votre cas, cela indiquera que les
de_DE.UTF-8@isodate
paramètres régionaux ont été générés (en supposant que vous n'avez aucun problème de syntaxe).Enfin et surtout, ajoutez ce qui suit à
/etc/default/locale
:Cela garantira que ne
LC_TIME
remplace que les paramètres régionaux par défaut définis à l'aide deLANG
.Connectez-vous à nouveau et vous devriez pouvoir voir la nouvelle date / heure ISO lors de l'utilisation
date
ou d'autres outils utilisant la fonction d'exécution libc respective.Le but ici est de faire le changement le moins intrusif tout en ne travaillant pas contre le système (par exemple contre le gestionnaire de paquets et les amis). Bien sûr, vous pouvez également simplement créer une copie de vos paramètres régionaux, l'installer de la même manière que celle décrite ci-dessus, puis ajuster
LANG
. Le fait est que tant que vous ne voulez pas courir le risque que vos modifications soient écrasées par une mise à jour de package, vous devez utiliser une copie personnalisée (quelle que soit la personnalisation que vous recherchez; c'estcopy
-à- dire ou simplement conserver les sections telles qu'elles étaient dans l'original). Et si vous changezLANG
pour pointer vers la définition locale complète personnalisée - ou si vous ajoutezLC_TIME
pour pointer uniquement vers la section personnalisée pertinente du même nom d'un fichier de définition de paramètres régionaux personnalisé - vous ne pourrez pas contourner l'un des paramètres globaux.la source
en_US.UTF-8@isodate
.copy
laLC_IDENTIFICATION
et comment cela affecterait la dénomination des fichiers et comment vous faites référence à la locale/etc/default/locale
et/var/lib/locales/supported.d/local
respectivement? Peux tu raconter?en_US@isodate
fichier de définition et l'utiliserlocaledef
pour produire les fichiers corrects; voir sourceware.org/git/?p=glibc.git;a=blob;f=localedata/README pour plus de détails (et sourceware.org/git/?p=glibc.git;a=blob;f=localedata/locales/ … Pour un exemple).localedef -i en_US@isodate -f UTF-8 en_US.UTF-8@isodate
, je ne suis pas sûr de la configuration spécifique à Debian, mon commentaire était principalement sur la façon dont pour nommer les paramètres régionaux./usr/local/share/i18n/locales
, ajouter les paires de paramètres régionaux / charmap pris en charge/usr/local/share/i18n/SUPPORTED
et exécuterdpkg-reconfigure locales
(voir également/etc/locale.gen
).