我们几个月前对网站进行了国际化,但忘了一部分:用户选择时区的下拉菜单.
您如何翻译以下行:
= 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
原文地址:https://www.jb51.cc/ruby/272134.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。