【问题标题】:Ruby On Rails: pluralize for other languagesRuby On Rails:其他语言的复数形式
【发布时间】:2011-03-01 05:23:38
【问题描述】:

我正在为非英语受众构建应用程序。现在,我使用英语名词来命名我的模型,但我更喜欢使用荷兰语。由于约定使用表的类名的复数形式,我假设它是 Rails 中的复数方法(它所在的位置,我不知道)。如何更改复数方法以及它的位置?这会破坏 Rails 吗?

我正在使用 Rails 2.3.5 和 Ruby 1.8.7

示例: Book 类现在变成了books。 我的 Boek 类变为 boeks,但使用 boeken

在语法上是正确的

【问题讨论】:

    标签: ruby-on-rails ruby internationalization customization


    【解决方案1】:

    将您的规则添加到 config/initializers 中的 inflections.rb 文件中。见API documentation

    ActiveSupport::Inflector.inflections do |inflect|
      inflect.plural 'boek', 'boeken'
    end
    

    【讨论】:

    • 我记得我曾短暂地利用屈折变化来复数我的母语……到处都是混乱和不规则。 ^^
    • 我在这里 (dutchgrammar.com/en/?n=NounsAndArticles.11) 看到 -en 终止符是常规终止符。您应该能够使用 .plural 和 .singular 编写默认规则,然后使用不规则复数。
    • 我可能会尝试谷歌搜索,看看是否有人已经为荷兰语创建了 inflections.rb。人们无需多次出错! :)
    • 我想知道为什么屈折变化没有被语言分开!如果我在英语和拉丁语中都有一个单词“bla”,而在英语中,复数形式应该是“blas”,而在拉丁语中应该是“blae”?
    【解决方案2】:

    这不是专门回答问题,但如果一种语言有太多违规行为,可以根据discussion 禁用变形器。

    ActiveRecord::Base.pluralize_table_names = false

    【讨论】:

      【解决方案3】:

      也许对您没有帮助,因为您想要荷兰语,但对于西班牙语、法语、哈萨克语、土耳其语或挪威语,有这样的:

      https://github.com/davidcelis/inflections

      【讨论】:

      • 荷兰语是一种奇怪的语言。 -s 上有一个复数形式,-en 上有一个。两者之间的选择是相当随意的,尽管它可以放入多个规则中(尽管规则可以取决于单词的含义)。除此之外,单词的最后一个音节也经常被修改。就像 School > Scholen 失去一个“o”,而 Ton > Tonnen 获得一个“n”。许多外国人从来没有正确的复数。即使是当地人也会因为不常见的词而弄错规则。某些方言有其他规则也无济于事。
      【解决方案4】:

      此外,就视图而言,我首选的处理外来字符串复数的方式是 i18n 复数。看看下面一个简单的例子。

      # config/locales/en.yml
      
      en:
        message:
          one: You have 1 message #Your foreign string
          other: You have %{count} messages #Your foreign string
      

      那么在视图中你可以这样做

      # app/views/messages/index.html.erb
      
      <%= t("message", count: current_user.messages.count) %>
      

      检查official documentation
      希望对您有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-02
        • 2010-11-28
        • 2011-12-18
        • 2012-10-26
        相关资源
        最近更新 更多