加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 翻译Rails时区

发布时间:2020-12-16 19:52:44 所属栏目:百科 来源:网络整理
导读:我们几个月前对网站进行了国际化,但忘了一部分:用户选择时区的下拉菜单. 您如何翻译以下行: = f.time_zone_select :timezone,ActiveSupport::TimeZone.all 解决方法 我遇到了同样的问题.但是,当我试图实现 Peter’s solution时,我发现了一个更简单的解决方
我们几个月前对网站进行了国际化,但忘了一部分:用户选择时区的下拉菜单.

您如何翻译以下行:

= f.time_zone_select :timezone,ActiveSupport::TimeZone.all

解决方法

我遇到了同样的问题.但是,当我试图实现 Peter’s solution时,我发现了一个更简单的解决方案. time_zone_select帮助器采用:model选项,默认为ActiveSupport :: TimeZone.根据API文档,所有这些模型都必须在all方法中返回一个时区对象数组.然后我们可以覆盖to_s方法来返回翻译(如果没有找到翻译,则默认为原始的).这是课程:
# lib/i18n_time_zone.rb
class I18nTimeZone < ActiveSupport::TimeZone
  def self.all
    super.map { |z| create(z.name,z.utc_offset) }
  end

  def to_s
    translated_name = I18n.t(name,:scope => :timezones,:default => name)
    "(GMT#{formatted_offset}) #{translated_name}"
  end
end

并在视图中:

<%= time_zone_select :user,:time_zone,nil,:model => I18nTimeZone %>

翻译文件中指定的翻译与之前一样:

# es.yml
es:
  timezones:
    "International Date Line West":    "Línea de fecha internacional del oeste"
    "Pacific Time (US & Canada)":      "Tiempo pacífico (& de los E.E.U.U.; Canadá)"
    # and so on

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读