我正在尝试根据语言的语法翻译一些项目的计数器。我遇到了doc关于复数形式的问题,每种语言都有所不同。我预计rules已经在I18n
内,而我需要做的只是填写翻译。但是当我在pluralize
i18n/backend/base.rb
方法的代码时
def pluralize(locale, entry, count)
return entry unless entry.is_a?(Hash) && count
key = :zero if count == 0 && entry.has_key?(:zero)
key ||= count == 1 ? :one : :other
raise InvalidPluralizationData.new(entry, count) unless entry.has_key?(key)
entry[key]
end
我发现它只支持en
。例如我现在正在阿拉伯语翻译工作。
I18n.backend.store_translations :ar, path: { one: 'one', two: 'two', other: 'other', many: 'many', few: 'few'}
在这里我填写了翻译后端,我希望如果我通过count
选项11,那么我会收到语言复数规则所指定的:many
翻译。
I18n.t :path, count: 11, locale: :ar #should return 'many'
我是否需要自己指定这些规则?那在哪里?或者我需要调整什么?
答案 0 :(得分:0)
您可以创建自己的规则,为此,您可以创建文件: 配置/初始化/是inflections.rb 并使这个例子适应你的现实:
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.plural /^(ox)$/i, '\1\2en'
inflect.singular /^(ox)en/i, '\1'
inflect.irregular 'octopus', 'octopi'
inflect.uncountable 'equipment'
end
查看文档: Inflections
答案 1 :(得分:0)
This答案解决了我的问题。我需要为自定义复数规则启用加载模式,然后为每个案例指定关键字。