在rails中将date_select值从英语更改为西班牙语

时间:2011-06-25 17:09:03

标签: ruby-on-rails-3 datepicker

我正在使用rails构建一个站点,并且我有一个日期选择器,其中包含一个Rails自动生成的下拉菜单。问题是我的网站是西班牙语,这几个月的下拉值都是英文的,有没有办法将语言改为西班牙语?

我尝试在config / environment.rb中添加一些代码行,我发现here 代码基本上是这样的:

require 'date'
class Date

MONTHNAMES = [nil] + %w(Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre)

module Format

MONTHS = {
  'Enero'  => 1, 'Febrero' => 2, 'Marzo'    => 3, 'Abril'    => 4,
  'Mayo'      => 5, 'Junio'     => 6, 'Julio'     => 7, 'Agosto' => 8,
  'Septiembre'=> 9, 'Octubre'  =>10, 'Noviembre' =>11, 'Diciembre'=>12
}
end
end

但是在我再次启动服务器之后没有任何改变。 我希望你能提前帮助我。

4 个答案:

答案 0 :(得分:7)

来自documentation

  

:use_month_names - 如果要自定义月份名称,请设置为包含12个月名称的数组。注意:您也可以使用Rails的i18n功能。

所以你可以这样做:

<%= f.date_select :date, {:use_month_names => ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre','Diciembre']} %>

或者,对于骨骼国际化点,用t()方法调用替换字符串并使用Rails的I18n本地化文件:

<%= f.date_select :date, {:use_month_names => [t(:jan), t(:feb), t(:mar), t(:apr), t(:may), t(:jun), t(:jul), t(:aug), t(:sep), t(:oct), t(:nov), t(:dec)]} %>

config/locales/es.yml

es:
   jan: "Enero"
   feb: "Febrero"
   ...

然后在config/application.rb设置:

config.i18n.default_locale = :es

宾果! : - )

答案 1 :(得分:1)

在Rails 4中:
(波兰案例:)

operator[]

全部

答案 2 :(得分:1)

in rails 5&gt;最简单,最具可扩展性的方式

在您看来

<%= f.date_select :start_time %>

config/locales/en.yml中添加此内容:

en:
  date:
    order: ["day", "year",  "month"]
    month_names: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "August", "September", "Oktober", "November", "December"]

只需更改字符串之间的月份名称即可。

答案 3 :(得分:0)

对于rails 4.2.5.1或更高版本,您可以使用t('locale_parameter_name')代替t(:locale_parameter_name)

<强> E.g:

:use_month_names => [t('jan'), t('feb'), t('mar'), t('apr'), t('may'), t('jun'), t('jul'), t('aug'), t('sep'), t('oct'), t('nov'), t('dec')]