Rails: есть ли встроенный перевод «назад»? - PullRequest
0 голосов
/ 26 октября 2018

Rails переводит время назад с time_ago_in_words и документация это .

time_ago_in_words(3.minutes.from_now)                 # => 3 minutes

Однако в нашем приложении мы используем "ago": 3 minutes ago

Итак, как лучше всего переводить, когда «назад» появляется перед time_ago, например, в French :

Через 3 минуты

Это встроено в Rails?

Использование Rails 4.2.10 и rails-i18n gem , которое обеспечивает расстояние во времени, но не "назад".

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Я думаю, вам просто нужно передать время в качестве переменной для перевода. Затем на языке yml s вы можете получить оставшуюся часть строки там, где она должна быть.

Предположим, что @product.purchased_time_ago возвращает time_ago_in_words().

# app/views/products/show.html.erb
<%= t('time_ago', time: @product.purchased_time_ago) %>

# config/locales/en.yml
en:
  time_ago: "%{time} ago"

# config/locales/fr.yml
fr:
  time_ago: "Il y a %{time}"

Это прямо взято из документов .

0 голосов
/ 26 октября 2018

Вы можете использовать пользовательские области:

https://github.com/rails/rails/blob/fc5dd0b85189811062c85520fd70de8389b55aeb/actionview/lib/action_view/helpers/date_helper.rb#L75

time_ago_in_words(3.minutes.ago, scope: 'datetime.distance_in_words_ago') # => 3 minutes ago

и вам нужно добавить это к вашей локали (en.yml)

en:
  datetime:
    distance_in_words_ago:
      x_days:
        one: 1 day ago
        other: "%{count} days ago"
      x_minutes:
        one: 1 minute ago
        other: "%{count} minutes ago"
      x_months:
        one: 1 month ago
        other: "%{count} months ago"
      x_years:
        one: 1 year ago
        other: "%{count} years ago"
      x_seconds:
        one: 1 second ago
        other: "%{count} seconds ago"

https://github.com/rails/rails/blob/fc5dd0b85189811062c85520fd70de8389b55aeb/actionview/lib/action_view/helpers/date_helper.rb#L78

...