7

私は奇妙な問題を抱えています、誰かが問題が何であるかを知っていることを望んでいます...

distance_of_time_in_words(およびその結果としてtime_ago_in_words)を使用しても、実際の時間距離は返されません。代わりに、「en、about_x_hours」や「en、x_minutes」などを返します。

次のように、パターンは正しいです。

time_ago_in_words(50.minutes.ago) => "en, about_x_hours"
time_ago_in_words(3.minutes.ago) => "en, x_minutes"

しかし、いったいなぜ実際の数の代わりに「x」、スペースの代わりに「_」、そしてそのすべての先頭に「en」が表示されるのでしょうか。

4

3 に答える 3

10

これにより、I18n-gemを介して翻訳する文字列が返されます。次のことを試してください。

# I18n.localize(string)
I18n.l time_ago_in_words(3.minutes.ago)

そして、(存在しない場合は)次のように追加します

# config/locales/en.yml
en:
  datetime:
    distance_in_words:
      ...
      less_than_x_minutes:
        one: "less than a minute"
        other: "less than %{count} minutes"
      x_minutes:
        one: "1 minute"
        other: "%{count} minutes"
      about_x_hours:
        one: "about 1 hour"
        other: "about %{count} hours"
      ....

また、en.ymlに次の(おそらくカスタマイズされた)データを含めるようにしてください。

http://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml

うまくいくか教えてください。

于 2010-10-24T11:36:46.473 に答える
3

やっと動作しました!! これが同じ問題を抱えている可能性のある人に役立つことを願っています...

基本的に、Lichtambergが最初に言ったことの半分は正しかった。en.ymlは次のようにする必要がありました。

en:
  x_minutes:
    one:   "1 minute"
    other: "%{count} minutes"

x_minutesは下datetimeにないことに注意してoneくださいotherI18n.lさらに、 I18nはすでにメソッドに実装されているため、必要はありませんdistance_of_time_in_words

したがって、上記(および、Lichtambergに含まれているファイルにある他のすべてのabout_x_hours、x_daysなどのパターン)を使用して、次のようにします。

time_ago_in_words(3.minutes.ago)

そして...出来上がり!

于 2010-10-28T06:55:56.927 に答える
0

恥知らずにtime_ago_in_words=>"{{count}}日で。"?

Railsはヘルパーで非推奨の構文を使用していましたが、最新のRubyバージョンで削除されました。Herokuのようなものを使用している場合は、本番インスタンスにRails2.3.9を使用するように指示してみてください。それ以外の場合は、Rubyのダウングレードを試すこともできます。

変更ログを参照してください:http ://weblog.rubyonrails.org/2010/9/4/ruby-on-rails-2-3-9-released

Changes i18n named-interpolation syntax from the deprecated Hello {{name}} to the 1.9-native Hello %{name}.
于 2011-01-15T11:35:14.547 に答える