如何在Rails语言环境文件中更改插值变量的大小写?

Mar*_*rry 11 internationalization ruby-on-rails-3.1

使用Rails 3.1.3和Ruby 1.9.3p0.

我发现默认情况下,Rails不会对表单按钮使用句子大小写.例如,它不是"更新用户"按钮,而是生成"更新用户"按钮.

按钮名称来自ActionView语言环境文件.有没有办法创建一个下调模型名称的默认值?关于插值的Ruby on Rails Guides i18n部分没有涉及到这一点,所以也许这是不可能的.以下不起作用:

en:
  helpers:
    submit:
      update: 'Update %{model}.downcase'
Run Code Online (Sandbox Code Playgroud)

一般来说,我很乐意找到语言环境YAML文件语法的参考.i18n指南涵盖了一些语法,但是查找所有感叹号,各种日期/时间格式等文档会很有帮助.或者我可能为此目的使用Ruby Hash而不是YAML文件?

Mar*_*rry 9

在进一步研究之后,我得出结论,这种对插值的操作是不可能的,至少使用YAML语言环境文件.

YAML在此处有记录,不支持字符串操作:http:
//www.yaml.org/spec/1.2/spec.html

关于Ruby本地化的主页是:http:
//ruby-i18n.org/wiki

从那里,我们找到默认I18n gem的代码并深入到插值代码.它用于sprintf插值:https:
//github.com/svenfuchs/i18n/blob/master/lib/i18n/interpolate/ruby.rb

该代码"严重基于Masao Mutoh的gettext字符串插值扩展":http:
//github.com/mutoh/gettext/blob/f6566738b981fe0952548c421042ad1e0cdfb31e/lib/gettext/core_ext/string.rb

该扩展名有一个格式化数字的示例:

For strings.
"%{firstname}, %{familyname}" % {:firstname => "Masao", :familyname => "Mutoh"}

With field type to specify format such as d(decimal), f(float),...
"%<age>d, %<weight>.1f" % {:age => 10, :weight => 43.4}
Run Code Online (Sandbox Code Playgroud)

扩展名是指[Ruby]" Kernel::sprintf格式字符串的详细信息":http:
//www.ruby-doc.org/core-1.9.2/Kernel.html#method-i-sprintf

在该文档中sprintf,有许多方法可以格式化数字,但没有用于更改字符串大小写的操作.