Ruby on rails 是否有一种Rails方法来翻译模型名称以用于标题(即标题化?)
I18n提供了一种转换模型名称的方便方法。以 如果我想显示“一条消息”、“两条消息”等等,这就足够了 但是,如果我也想显示“消息”(例如,在菜单中),该怎么办?我必须在I18n文件中创建另一个完全不同的条目吗?有什么方法可以做到这一点吗?比如:Ruby on rails 是否有一种Rails方法来翻译模型名称以用于标题(即标题化?),ruby-on-rails,ruby,internationalization,rails-i18n,Ruby On Rails,Ruby,Internationalization,Rails I18n,I18n提供了一种转换模型名称的方便方法。以 如果我想显示“一条消息”、“两条消息”等等,这就足够了 但是,如果我也想显示“消息”(例如,在菜单中),该怎么办?我必须在I18n文件中创建另一个完全不同的条目吗?有什么方法可以做到这一点吗?比如: I18n.backend.store_translations :en, inbox: { title: 'Message' zero: 'no messages' one: 'one message',
I18n.backend.store_translations :en, inbox: {
title: 'Message'
zero: 'no messages'
one: 'one message',
other: '%{count} messages'
}
检查一下是否使其看起来像一个标题,以及是否使其多样化。我认为Rails
mb_chars
将通过unicode规则实现这一点
我很惊讶地看到您需要这个,因为我习惯于将Rails中的mb_chars
看作是ruby 1.8天的剩余,不再有任何用处。但这似乎是一个默认Rails titleize不能做正确的i18n事情的地方,但是如果您首先将字符串转换为mb_chars
代理,它会做正确的i18n事情
irb(main):019:0> "\u01C9ab".titlecase # "ljab"
=> "ljab" # wrong
irb(main):021:0> "\u01C9ab".mb_chars.titlecase
=> LJab
# right. Or at least closer and as close to right as Rails is gonna get, I'm not
# sure if it should really be "Ljab", which is actually different.
# I'm out of my league here.
我不太确定Rails DEVS会不会考虑这个bug。 pluralizehelper接受复数形式作为第三个参数
将3“人”、“人”复数化
您可以为您的边缘案例构建一个助手。感谢您指出这一点,但我认为titleize和pluralize不具备国际化能力。他们只为英语工作,不是吗?我看了一下
titleize
的源代码,我认为这是不可能的titleize
在做它的事情之前似乎没有参考I18n
。
irb(main):019:0> "\u01C9ab".titlecase # "ljab"
=> "ljab" # wrong
irb(main):021:0> "\u01C9ab".mb_chars.titlecase
=> LJab
# right. Or at least closer and as close to right as Rails is gonna get, I'm not
# sure if it should really be "Ljab", which is actually different.
# I'm out of my league here.