使用导轨如何与不同的语言变化

发布于 2025-02-01 07:49:45 字数 1045 浏览 4 评论 0原文

我使用rails 6.1.4,并且需要配置两种语言的拐点,但是当我尝试使用多元化时,该单词不应用多元化。

我需要以不同的语言应用不同的规则,但不起作用。

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.plural(/^(ox)$/i, '\1en')
  inflect.singular(/^(ox)en/i, '\1')
  inflect.irregular "person", "people"
  inflect.uncountable %w[fish sheep]
end

ActiveSupport::Inflector.inflections(:"pt-BR") do |inflect|
  inflect.plural(/$/, "s")
  inflect.plural(/^([a-zA-z]*)a$/i, '\1as')
  inflect.plural(/(s)$/i, '\1')
  inflect.plural(/^(paí)s$/i, '\1ses')
  inflect.plural(/(z|r)$/i, '\1es')
  inflect.plural(/al$/i,  "ais")
  inflect.plural(/el$/i,  "eis")
  inflect.plural(/ol$/i,  "ois")
  inflect.plural(/ul$/i,  "uis")
  inflect.plural(/([^aeiou])l$/i, '\1is')
  ...

  # Irregulares
  inflect.irregular "país", "países"
end

当尝试应用多个

”在此处输入图像说明”

I using Rails 6.1.4, and I need to configure inflections in 2 languages, but when I try to use pluralize, the word not apply pluralize.

I need apply different rules in different languages, but don't working.

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.plural(/^(ox)$/i, '\1en')
  inflect.singular(/^(ox)en/i, '\1')
  inflect.irregular "person", "people"
  inflect.uncountable %w[fish sheep]
end

ActiveSupport::Inflector.inflections(:"pt-BR") do |inflect|
  inflect.plural(/$/, "s")
  inflect.plural(/^([a-zA-z]*)a$/i, '\1as')
  inflect.plural(/(s)$/i, '\1')
  inflect.plural(/^(paí)s$/i, '\1ses')
  inflect.plural(/(z|r)$/i, '\1es')
  inflect.plural(/al$/i,  "ais")
  inflect.plural(/el$/i,  "eis")
  inflect.plural(/ol$/i,  "ois")
  inflect.plural(/ul$/i,  "uis")
  inflect.plural(/([^aeiou])l$/i, '\1is')
  ...

  # Irregulares
  inflect.irregular "país", "países"
end

This is output when try apply pluralize

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

屌丝范 2025-02-08 07:49:45

请参阅该文档的文档,以获取 string#crint

复数化(count = nil,locale =:en)

如果指定了可选参数语言环境,则该单词将为
被用作该语言的单词。 默认情况下,此参数为
设置为:en。

如果要使用非英语复数化规则,则必须指定您的语言环境。

"canal".pluralize(:"pt-BR")

Please see the documentation for String#pluralize

pluralize(count = nil, locale = :en)

If the optional parameter locale is specified, the word will be
pluralized as a word of that language. By default, this parameter is
set to :en.

You have to specify your locale if you want to use non-English pluralization rules.

"canal".pluralize(:"pt-BR")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文