システム全体で日付/時刻形式をカスタマイズするためのベストプラクティスは何ですか?

システム全体で日付/時刻形式をカスタマイズするためのベストプラクティスは何ですか?

長い話を短く

不要なコンテンツを繰り返さないというDRY原則に準拠しながら、日付と時刻の形式をカスタマイズするためのベストプラクティスは何ですか?


カスタマイズしたい日付と時刻の形式のみ私のシステムでは、残りのロケールは変更せずに保持します。環境変数をLC_TIME使用すると、代替ロケールを指すだけでその側面をカスタマイズできます。私はLinux(正確にはUbuntu 14.04)を使用しているので、私が理解している形式を入力localedefとして使用したいと思います。

私は次の3つの文書を読んだ。

最後のものが特に役立ちます。

今私ただこのセクションをカスタマイズしたいと思います。LC_TIMEそして他のすべてを継承したかったのです。

だから、呼び出されたファイルにコピーして、en_US私が望む値を調整します。ドキュメントをフィルタリングした後、他のすべてのセクションもキーワードに置き換えることにしました。isodate/usr/share/i18n/localescopy

質問:どのアプローチがベストプラクティスであるべきかは明確ではありません。誰もこれ(または私が提供したものの代替)を知っていますか?

d_t_fmtたとえば、いくつかの値(、、、、、、)d_fmtにのみ興味があるので満足しています。t_fmtt_fmt_ampmam_pmdate_fmt継承する次にen_USLC_TIMEISOに似た形式(ISO 8601)を使用して値を上書きします。ただし、ステータスに関する文書copy(強調)は次のとおりです。

コピー

このカテゴリの定義として使用される既存のロケールの名前を指定します。このキーワードを指定すると他のキーワードは指定できません。

つまり、単に1つのキーワードを追加してcopyからさらにキーワードを追加することはできません。

またLC_TIME、セクションを定義するのは正当なのでしょうか、それともlocaledefコンパイルを完全に拒否しますか?


これまで私が考えたこと:

escape_char /
comment_char %

LC_IDENTIFICATION
copy "en_US"
END LC_IDENTIFICATION

LC_CTYPE
copy "en_US"
END LC_CTYPE

LC_COLLATE
copy "en_US"
END LC_COLLATE

LC_MONETARY
copy "en_US"
END LC_MONETARY

LC_NUMERIC
copy "en_US"
END LC_NUMERIC

LC_TIME
abday   "<U0053><U0075><U006E>";"<U004D><U006F><U006E>";/
    "<U0054><U0075><U0065>";"<U0057><U0065><U0064>";/
    "<U0054><U0068><U0075>";"<U0046><U0072><U0069>";/
    "<U0053><U0061><U0074>"
day "<U0053><U0075><U006E><U0064><U0061><U0079>";/
    "<U004D><U006F><U006E><U0064><U0061><U0079>";/
    "<U0054><U0075><U0065><U0073><U0064><U0061><U0079>";/
    "<U0057><U0065><U0064><U006E><U0065><U0073><U0064><U0061><U0079>";/
    "<U0054><U0068><U0075><U0072><U0073><U0064><U0061><U0079>";/
    "<U0046><U0072><U0069><U0064><U0061><U0079>";/
    "<U0053><U0061><U0074><U0075><U0072><U0064><U0061><U0079>"

week    7;19971130;7
first_weekday   1
first_workday   2
abmon   "<U004A><U0061><U006E>";"<U0046><U0065><U0062>";/
    "<U004D><U0061><U0072>";"<U0041><U0070><U0072>";/
    "<U004D><U0061><U0079>";"<U004A><U0075><U006E>";/
    "<U004A><U0075><U006C>";"<U0041><U0075><U0067>";/
    "<U0053><U0065><U0070>";"<U004F><U0063><U0074>";/
    "<U004E><U006F><U0076>";"<U0044><U0065><U0063>"
mon "<U004A><U0061><U006E><U0075><U0061><U0072><U0079>";/
    "<U0046><U0065><U0062><U0072><U0075><U0061><U0072><U0079>";/
    "<U004D><U0061><U0072><U0063><U0068>";/
    "<U0041><U0070><U0072><U0069><U006C>";/
    "<U004D><U0061><U0079>";/
    "<U004A><U0075><U006E><U0065>";/
    "<U004A><U0075><U006C><U0079>";/
    "<U0041><U0075><U0067><U0075><U0073><U0074>";/
    "<U0053><U0065><U0070><U0074><U0065><U006D><U0062><U0065><U0072>";/
    "<U004F><U0063><U0074><U006F><U0062><U0065><U0072>";/
    "<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
    "<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
% Appropriate date and time representation (%c)
%   "%Y-%m-%d %H:%M:%S"
d_t_fmt "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>"
%
% Appropriate date representation (%x)
%   "%Y-%m-%d"
d_fmt   "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064>"
%
% Appropriate time representation (%X)
%   "%H:%M:%S"
t_fmt   "<U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>"
%
t_fmt_ampm ""
%
am_pm   "";""
%
% Appropriate date representation (date(1))   "%Y-%m-%d %H:%M:%S"
date_fmt    "<U0025><U0059><U002D><U0025><U006D><U002D><U0025><U0064><U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053>"
END LC_TIME

LC_MESSAGES
copy "en_US"
END LC_MESSAGES

LC_PAPER
copy "en_US"
END LC_PAPER

LC_NAME
copy "en_US"
END LC_NAME


LC_ADDRESS
copy "en_US"
END LC_ADDRESS

LC_TELEPHONE
copy "en_US"
END LC_TELEPHONE

LC_MEASUREMENT
copy "en_US"
END LC_MEASUREMENT

答え1

一部の説明で述べたように、残りの部分をコピーしてLC_TIMEカスタムロケールファイルでカスタマイズできます。マニュアルページLC_TIMEに示すように、カーネルコマンドラインオプションを使用して起動時に設定を上書きすることもできます。/etc/locale.conflocale.conf(5)locale.LC_TIME=

関連情報