Rails(現時点では3.1.3)のl(またはlocalize)メソッドが、現在設定されているロケール私はちょうどこれが事実であると仮定しており、これについて具体的にテストされていません...私は、日付がロケールに従って再フォーマットされたことを確認しました。現行のロケールに基づいて、Railsに時間形式(am/pmまたはnot)を表示
私のレールコンソールでは、次のすべての時計が表示されます。 2つのロケール間の唯一の目に見える違いは、月名の大文字です。
I18n.l Time.now, :format => :short, :locale => :"en"
I18n.l Time.now + 12.hours, :format => :short, :locale => :"en"
I18n.l Time.now, :format => :short, :locale => :"sv-SE"
I18n.l Time.now + 12.hours, :format => :short, :locale => :"sv-SE"
これはなぜですか? これは時間のローカライズの一部ではありませんか?
私が見つけたAM/PMの唯一の手動介入は、私が12時間のクロックを「手動で」要求できるフォーム用の選択肢を生成することです。奇妙な選択肢は、私がロケールに依存したいと思う種類のものが好きだからです。
Mac OSの場合は、言語とロケールをそれぞれ別々に選択する必要がありますが、その理由はen-US、en-GB、sv-SEの命名が正しい理由です。言語を示す - COUNTRY。スウェーデン語に適したフォーマットで英語の翻訳を含むen-SEファイルを私のアプリケーションに追加することは、まったく問題ありません。
アメリカのユーザーに適した12時間の時計を取得するには、すべての米国の開発者が英語のデフォルトロケールファイル(en-USはen btwと同じに見える)を編集して編集するわけではありません。だから、私がどれほど愚かであるかを私に見せてください。私はこの問題が本当に本当に基本的なものになることを完全に期待しています。
要するに、私は間違っていますか?私のタイムスタンプを "修正"するにはどうすればいいですか? :)
おかげのようになります
ように見えるだろうが、**表示するとき、私の問題は、**以上です12時間または24時間。私の腸はそれがロケール設定の一部でなければならないと私に言ったが、それは私のテストからはそうではないようだ。私は自分の論理を書いておかないと、フォーマットの12時間または24時間のバリエーションを求めることができません。 sv-SEロケールでサンプルを実行すると** 01.12 **が出力されます。デフォルトのロケールファイルでは、amとpmの文字列を空白に設定するためです。 –
私は確信していませんが、多分それはプログラミングの質問よりも文化的ですか?必要に応じて、I18nロケールファイルにクロック形式を定義することができます。 12時間制は英語圏でのみ使用されていますが、12時間制または24時間制のどれが一般的であるか分かりません。 – 0x4a6f4672
私はそれが彼の質問のポイントだと思う - 異なるロケールは異なる時計を使用する(12対24)。例えば私はen-USが12時間とde-DEを使って24時間使用することを期待しています。 –