如何使用不同语言的 rails 词形变化
How use rails inflections with diferent languages
我使用Rails 6.1.4
,我需要配置2种语言的词形变化,但是当我尝试使用pluralize时,这个词不适用pluralize。
我需要在不同的语言中应用不同的规则,但不起作用。
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.plural(/^(ox)$/i, 'en')
inflect.singular(/^(ox)en/i, '')
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, 'as')
inflect.plural(/(s)$/i, '')
inflect.plural(/^(paí)s$/i, 'ses')
inflect.plural(/(z|r)$/i, 'es')
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, 'is')
...
# Irregulares
inflect.irregular "país", "países"
end
这是尝试应用复数时的输出
请参阅 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.
如果您想使用 non-English 复数规则,您必须指定您的语言环境。
"canal".pluralize(:"pt-BR")
我使用Rails 6.1.4
,我需要配置2种语言的词形变化,但是当我尝试使用pluralize时,这个词不适用pluralize。
我需要在不同的语言中应用不同的规则,但不起作用。
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.plural(/^(ox)$/i, 'en')
inflect.singular(/^(ox)en/i, '')
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, 'as')
inflect.plural(/(s)$/i, '')
inflect.plural(/^(paí)s$/i, 'ses')
inflect.plural(/(z|r)$/i, 'es')
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, 'is')
...
# Irregulares
inflect.irregular "país", "países"
end
这是尝试应用复数时的输出
请参阅 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.
如果您想使用 non-English 复数规则,您必须指定您的语言环境。
"canal".pluralize(:"pt-BR")