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

ruby-on-rails – 具有所有月份名称的本地化下拉列表

发布时间:2020-12-17 02:56:21 所属栏目:百科 来源:网络整理
导读:我试图在Rails 4中提供所有月份的下拉列表.我是这样做的: select % (1..12).each do |month| % option value="%= month %"%= Date::MONTHNAMES[month] %/option % end %/select 现在的问题是我想本地化它,但我不能在简单的字符串上使用locate方法应用月份的
我试图在Rails 4中提供所有月份的下拉列表.我是这样做的:

<select >
    <% (1..12).each do |month| %>
        <option value="<%= month %>"><%= Date::MONTHNAMES[month] %></option>
    <% end %>
</select>

现在的问题是我想本地化它,但我不能在简单的字符串上使用locate方法应用月份的名称.

我该怎么解决这个问题?

更新

我知道我可以自己翻译,但我希望,因为Rails非常友好地用英语给我一个名字,如果有任何方式Rails可以用其他语言给我.

解决方法

首先,安装 rails-i18n gem.这个gem包含许多语言环境的本地化数据.请务必小心根据Rails版本安装的gem版本(如README中所述).

接下来,在application.rb配置中定义需要支持的语言环境(在README中再次描述):

config.i18n.available_locales = [:cs,:en,:es,:de]

然后,您可以在任何地方简单地使用I18n.l(即I18n的localize方法)并使其仅打印给定语言环境中的月份名称(有关格式化选项,请参阅本地化in the Rails guides和strftime的更多信息).

您需要在一年中生成一系列日期(例如,所有月份的第一天).

# generate dates for each month in the year
dates = (1..12).map{|d| Date.parse("#{'%02d' % d}/01") }
# => [Fri,01 Jan 2016,Mon,01 Feb 2016,Tue,01 Mar 2016,Fri,...,01 Nov 2016,Thu,01 Dec 2016]

# use these dates to get month names in the given locale     
dates.map{ |d| I18n.l(d,format: "%B",locale: :en) }
# => ["January","February","March","April","May","November","December"]

dates.map{ |d| I18n.l(d,locale: :de) }
# => ["Januar","Februar","M?rz","Mai","Dezember"]

dates.map{ |d| I18n.l(d,locale: :cs) }
# => ["leden","únor","b?ezen","duben","květen","listopad","prosinec"]

(编辑:李大同)

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

    推荐文章
      热点阅读