私はKubuntu 14.04.2 LTSを使用しています。次のコマンドを使用してロケールを設定しました。
export LANG=ru_RU.utf8 LANGUAGE=ru_RU.utf8 LC_ALL=ru_RU.utf8
今、locale
すべての項目があると仮定しますru_RU.utf8
。ただし、を発行すると、date
次の結果が表示されます。
Чт. мая 14 12:55:36 MSK 2015
英語で「5月14日」と言うのが一般的ですが、ロシア語では「мая14」とは言いません(「5月14日」ではなく「5月14日」を意味する)。 「14 мая」または最悪の場合は「14月」でなければなりません。
によると、ロケールinfo coreutils 'date invocation'
のデフォルトの書式文字列は、ロケールで取得したものとまったく同じように表示されます。ただし、同じ情報ページには、フォーマット文字列がロケールカテゴリによって異なることが示されています。そのため、システムロケールデータベースにバグがあると結論付けました。C
'+%a %b %e %H:%M:%S %Z %Y'
ru_RU.utf8
LC_TIME
これは実際にバグですか、それとも何か抜けましたか?
ベストアンサー1
これはバグではありませんdate
。の定義が原因ですLC_TIME
。info
ページによると:
移動する日付型パラメータなしで呼び出すことは、呼び出すのと同じです。 次のような基本的な形式があります。LC_TIMEロケールカテゴリ。
今開くと/usr/share/i18n/locales/ru_RU
、下には、次のように定義された(日付/時刻形式)がLC_TIME
表示されます。date_fmt
date_fmt "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
に変換されます。%a %b %e %H:%M:%S %Z %Y
-
%a
該当のロケールの曜日の省略名(例)Чт
-
%b
該当のロケールの月の省略名(例)май
-
%e
日付、空白で埋められた日付%_d
(例14
)など
。 ..
したがって、ファイルを編集し、2つの変換指定子と%b
(%e
つまり、swap<U0062>
と<U0065>
)を置き換える場合:
date_fmt "<U0025><U0061><U0020><U0025><U0065><U0020><U0025><U0062>/
<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
<U0025><U005A><U0020><U0025><U0059>"
その後、これを実行するとlocale-gen
正しい日付形式を取得できます。
LC_TIME=ru_RU.utf8 date
Чт 14 май 13:27:14 MSK 2015
上記の文書の最終改訂日(2015年5月14日現在)は次のとおりです。2013-11-14バグを報告してください。[email protected]