【日付・日時の表記】
日付の表記
でそれぞれ表記される。
それ以外にカナダでは日、月、年や月、日、年に加えて年、月、日など混在していたりするが、世界的にみると日、月、年が多数派のよう。
【Railsのi18n 日付表示のデフォルト】
- en.yml 2018-01-02 (年-月-日)
- en-US.yml 02/01/2018 (日/月/年)
- en-GB.yml 02-01-2018 (日-月-年)
となっている。
en.ymlのように年を最初に表記すると月と日を混同することはないように思うが、この順序はおそらく一般的でないので分かりづらいのでは。
また、アメリカ式表記でも日が月より先になっているのが参考ページとは異なっている。
参考までにメジャーなサービスの表記の確認できた範囲だと
Facebook: アメリカ英語(English US)
- 相対表記 23hrs (何時間/何分)
- May 7, 2017(月名、日、年)
- 日時表記 June 25 at 4:37 PM (月名、日、時刻、午前・午後)
Facebook: イギリス英語(Englis UK)
- 相対表記 23hr (何時間/何分)
- May 2017(日、月名、年)
- 日時表記 25 June at 16:37 (月名、日、時刻(24時間表記))
Twitter: 英語・イギリス英語も同じ
- 相対表記 23h(何時間/何分)
- 日付表記 June 25(月名、日)
- 日時表記 11:47 AM - 7 Dec 2017(時刻 午前・午後 日、月名、年)
投稿された日時と現時刻との時間によって表記は多岐にわたるのでもれがあるかもしれないがおおよそ上記のような感じ。
月を数字でなく月名で表記することで月と日の順序が異なっていても混同されることはなさそう。
しかしRailsの公式ガイドを参照すると
いくつかの議論 を経た結果、Railsのi18nライブラリではロケールキーの扱いについて 実用に則したアプローチ を採用しています。つまり、:en
や:pl
のようないわゆる ロケール(="言語") 部分のみをロケールキーとして採用しました。:en-US
や:en-GB
のような、言語と地域(あるいは方言)を分離した表記法は、ロケールキーとしては使用されていません。
ということで言語設定がen-USでも、en-UKでもRailsのlocaleは:enになるとのこと。
どうしてもen-USなどに対応する場合は
request.env['HTTP_ACCEPT_LANGUAGE'] で "en-GB,en-US;q=0.9,en;q=0.8,ja-JP;q=0.7,ja;q=0.6"
のように取得できるのでこれをもとにフィルタやヘルパーで対応することになりそう。
今回の対応としては~.en.ymlにでイギリス式表記を採用することとした。
【日付表記】
date.en.yml
en:
date:
formats:
default: "%d %b %Y" => 27 Sep 2016
long: "%a, %d %B, %Y" =>Tue, 27 Septempber, 2016
short: "%d %b" =>27 Sep
【日時表記】
datetime.en.yml
en:
date:
formats:
default: "%a, %d %b %Y %H:%M:%S %z" =>27 Sep 2016 22:07 +0900
long: "%B %d, %Y %H:%M" =>Tue, 27 Septempber, 2016 22:07:20 +0900
short: "%d %b %H:%M" =>27 Sep 22:07