
長い話を短く
不要なコンテンツを繰り返さないというDRY原則に準拠しながら、日付と時刻の形式をカスタマイズするためのベストプラクティスは何ですか?
カスタマイズしたい日付と時刻の形式のみ私のシステムでは、残りのロケールは変更せずに保持します。環境変数をLC_TIME
使用すると、代替ロケールを指すだけでその側面をカスタマイズできます。私はLinux(正確にはUbuntu 14.04)を使用しているので、私が理解している形式を入力localedef
として使用したいと思います。
私は次の3つの文書を読んだ。
- http://pubs.opengroup.org/onlinepubs/009696699/basedefs/xbd_chap07.html
- http://manpages.ubuntu.com/manpages/trusty/man1/localedef.1posix.html
- https://ccollins.wordpress.com/2009/01/06/how-to-change-date-formats-on-ubuntu/
最後のものが特に役立ちます。
今私ただこのセクションをカスタマイズしたいと思います。LC_TIME
そして他のすべてを継承したかったのです。
だから、呼び出されたファイルにコピーして、en_US
私が望む値を調整します。ドキュメントをフィルタリングした後、他のすべてのセクションもキーワードに置き換えることにしました。isodate
/usr/share/i18n/locales
copy
質問:どのアプローチがベストプラクティスであるべきかは明確ではありません。誰もこれ(または私が提供したものの代替)を知っていますか?
d_t_fmt
たとえば、いくつかの値(、、、、、、)d_fmt
にのみ興味があるので満足しています。t_fmt
t_fmt_ampm
am_pm
date_fmt
継承する次にen_US
、LC_TIME
ISOに似た形式(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.conf
locale.conf(5)
locale.LC_TIME=