Ruby on rails Rails本地化月和日数组中出现nil条目的原因是什么?

Ruby on rails Rails本地化月和日数组中出现nil条目的原因是什么?,ruby-on-rails,internationalization,rails-i18n,Ruby On Rails,Internationalization,Rails I18n,我使用的是Rails i18n,我注意到几个月内必须输入一个nil(如文档中所述:),如下所示: month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] 因为没有第0个月这样的事情 为什么这很重要,为什么一月不是第一个元素的返回?这是如何工作的?他们可能只是希望数组索引与正确的月份相对应,以便在前面粘贴一个存根 e、 g

我使用的是Rails i18n,我注意到几个月内必须输入一个nil(如文档中所述:),如下所示:

month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
因为没有第0个月这样的事情


为什么这很重要,为什么一月不是第一个元素的返回?这是如何工作的?

他们可能只是希望数组索引与正确的月份相对应,以便在前面粘贴一个存根

e、 g


他们可能只是想让数组索引与正确的月份相对应,所以在前面粘贴一个存根

e、 g


这是因为自然月数是基于
1
,而不是像典型数组那样基于
0
。为了做到这一点并避免在需要时记住执行索引计算,month names数组只是在
zero
位置定义了额外的元素

请看一个如何使用它的示例:

#按编号查找月份名称(基于1):
#
#月份名称(1)#=>“一月”
#
#如果通过:使用月数选项:
#
#月份名称(1)#=>1
#
#如果通过:使用两个月号码选项:
#
#月份名称(1)#=>“01”
#
#如果通过:添加月数选项:
#
#月份名称(1)#=>“1-1月”
#
#如果传递了:month\u format\u string选项:
#
#月份名称(1)#=>“一月(01)”
#
#取决于格式字符串。
def月份名称(编号)
如果@options[:使用月数]
数
elsif@options[:使用两位数]
“%02d”%number
elsif@options[:添加月份号]
“#{number}-#{month_names[number]}”
elsif格式字符串=@options[:月格式字符串]
格式\u字符串%{number:number,name:month\u names[number]}
其他的
月份名称[编号]
结束
结束

这是因为自然月数是基于
1
,而不是像典型数组那样基于
0
。为了做到这一点并避免在需要时记住执行索引计算,month names数组只是在
zero
位置定义了额外的元素

请看一个如何使用它的示例:

#按编号查找月份名称(基于1):
#
#月份名称(1)#=>“一月”
#
#如果通过:使用月数选项:
#
#月份名称(1)#=>1
#
#如果通过:使用两个月号码选项:
#
#月份名称(1)#=>“01”
#
#如果通过:添加月数选项:
#
#月份名称(1)#=>“1-1月”
#
#如果传递了:month\u format\u string选项:
#
#月份名称(1)#=>“一月(01)”
#
#取决于格式字符串。
def月份名称(编号)
如果@options[:使用月数]
数
elsif@options[:使用两位数]
“%02d”%number
elsif@options[:添加月份号]
“#{number}-#{month_names[number]}”
elsif格式字符串=@options[:月格式字符串]
格式\u字符串%{number:number,name:month\u names[number]}
其他的
月份名称[编号]
结束
结束
months[12] = December
    # Looks up month names by number (1-based):
    #
    #   month_name(1) # => "January"
    #
    # If the <tt>:use_month_numbers</tt> option is passed:
    #
    #   month_name(1) # => 1
    #
    # If the <tt>:use_two_month_numbers</tt> option is passed:
    #
    #   month_name(1) # => '01'
    #
    # If the <tt>:add_month_numbers</tt> option is passed:
    #
    #   month_name(1) # => "1 - January"
    #
    # If the <tt>:month_format_string</tt> option is passed:
    #
    #   month_name(1) # => "January (01)"
    #
    # depending on the format string.
    def month_name(number)
      if @options[:use_month_numbers]
        number
      elsif @options[:use_two_digit_numbers]
        '%02d' % number
      elsif @options[:add_month_numbers]
        "#{number} - #{month_names[number]}"
      elsif format_string = @options[:month_format_string]
        format_string % {number: number, name: month_names[number]}
      else
        month_names[number]
      end
    end