现在的问题是我想本地化它,但我不能应用locate带有月份名称的简单字符串的方法。-6ren">
gpt4 book ai didi

ruby-on-rails - 带有所有月份名称的本地化下拉菜单

转载 作者:行者123 更新时间:2023-12-05 00:56:03 27 4
gpt4 key购买 nike

我试图在 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 版本要非常小心。

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

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

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

您首先需要在一年中生成一系列日期(例如所有月份的第 1 天)。
# 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, format: "%B", locale: :de) }
# => ["Januar", "Februar", "März", "April", "Mai", ..., "November", "Dezember"]

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

关于ruby-on-rails - 带有所有月份名称的本地化下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36934757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com