ロケール定義の変更(ロケールではない)

ロケール定義の変更(ロケールではない)

予備コメント:質問は〜です。いいえ~について環境LC_ALLLC_TIME、などを変更してロケールを変更します。LANGこれはロケールを変更するのと似ています。定義、またはそれぞれを使用して/usr/share/i18n/locales/de_DEこれらのシステム設定を変更するよりも、適切なオプションの推奨事項を取得します。

これ意図得ることISO時間表現 %Y-%m-%dそして%H:%M:%S不利な副作用もありません。

オンラインで見つけた提案はまだ適していません(たとえば、ロケールを「デンマーク語」に設定すると、曜日名のデフォルトのスペルは保持されません)。

現在の所望の動作を得るために見ることができる唯一のオプションは、を変更することです/usr/share/i18n/locales/de_DE。システムが更新されると、変更されたファイルが上書きされる可能性があるため、これは完全な解決策ではありません。

私の質問は次のとおりです

  1. 目的の機能を取得するために特定のシステムロケールファイルを変更するよりも優れたロケール関連オプションはありますか?
  2. 特定のロケール定義ファイルを変更する際に問題がありますか? (システムが更新されたときにこのファイルを上書きするのを防ぐ方法は何ですか?)
  3. 以下を定義することをお勧めします。新しい既存のロケールファイルの特定のバリエーションをLC_*設定で使用しますか? (システムはこの新しいファイル/定義についてどのように正しく学習しますか?)
  4. 他に提案がありますか?

答え1

最近の質問私はこれらの変化のベストプラクティスが何であるか尋ねました。まだ答えがありません。しかし、私が使っているレシピをお知らせすることができ、そのレシピが効果があることが証明されました。すべてのプログラムは日付を正しく選択します。

私の説明はUbuntuに関するものですが、DebianとMintにも当てはまります。

準備

カスタマイズしたいロケール設定を/usr/share/i18n/locales新しいファイルにコピーします。例えば

cp /usr/share/i18n/locales/de_DE /usr/share/i18n/locales/de_DE@isodate

調整みんな次の部分を除いてLC_TIME

copy "de_DE"

LC_TIME必要な結果に合わせてこのセクションを調整してください。上記の質問の設定をテンプレートとして使用できます。これがまさにあなたが望むようです。

そのロケールで「AM / PM」表記を使用していない場合は、スペースに設定してください。

t_fmt_ampm ""
am_pm   "";""

システムに教えてください

ファイルを編集し/var/lib/locales/supported.d/local、ロケール定義に関する情報を追加します。つまり、上記のファイル名が次のような行を追加しisodate、それ以外の場合は次のように調整します。

de_DE.UTF-8@isodate UTF-8

存在しない場合は、/var/lib/locales/supported.d/local同じ名前のファイルを作成します。システムのパッケージが更新されると上書きされる可能性があるため、このフォルダのパッケージやenファイルに変更を適用しないでくださいdelanguage-pack-*-baselanguage-pack-*

次に、次を実行してくださいdpkg-reconfigure locales

# dpkg-reconfigure locales
Generating locales...
  de_DE.UTF-8@isodate... done
  de_DE.UTF-8... up-to-date
Generation complete.

あなたの場合、これはde_DE.UTF-8@isodateロケールが作成されたことを示します(構文問題がないと仮定)。

最後に、以下を追加してください/etc/default/locale

LC_TIME="de_DE.UTF-8@isodate"

これは次のことを保証します。ただ LC_TIME定義されたデフォルトのロケールを使用して上書きしますLANG

date再度ログインすると、そのlibcランタイム機能を使用する他のツールを使用するときに新しいISO日付/時刻を表示できます。


意図ここ努力しなくてもできる最も侵害的な変化です。反対するシステム(パッケージ管理者や友人など)もちろん、ロケールのコピーを簡単に作成して上記と同様にインストールしてから調整することもできますLANG。要点は、パッケージの更新によって変更を上書きしたくない場合は、次のことができることです。〜しなければならないカスタムコピーを使用してください(必要なカスタマイズ、copyつまり単に元の部分を保持)。そして、LANG以下を指すものに変更するかどうかいっぱいカスタムロケール定義 -またはあなたが関係なく次へ追加 LC_TIMEカスタムロケール定義ファイルと同じ名前の関連するカスタムセクションのみを指します。グローバル設定のいずれかを調整できません。

関連情報