我希望利用Globalize3来翻译我正在建设的项目中的模型。但是,尝试它看起来像每个模型,比如说Post
:
class Post < ActiveRecord::Base
translates :title, :body
end
将完全独立于其他帖子,即标题必须翻译多次,即使标题与已翻译的标题相同。即系统已经知道它应该是。
据我所知,在许多情况下,字符串是唯一的,所以这不是问题,但是,想象一下具有颜色属性的汽车模型。如果系统有数百辆具有相同颜色的汽车,我应该多次翻译颜色吗?我想翻译一次,如果字符串相同,所有人都可以使用相同的翻译。
我是否误解了某些内容,或者这真的是Globalize3的工作原理吗?如果是这样,它真的听起来像是在字符串是唯一的时候,就像在博客中一样。
是否还有其他宝石能够满足我的需求?
感谢您的帮助!
答案 0 :(得分:2)
基本上就是Globalize的工作原理,每个模型记录的属性都被翻译并保存在翻译记录中。
您的问题可以通过规范化表来解决,因此颜色本身就变成了一个模型,并且您将其翻译出来。
我不会这样做,而且我不知道你的场景有什么宝石。我会改为做以下事情:
存储RGB值,然后在控制器中将其转换为颜色名称。然后,您可以使用Rails i18n模块进行翻译。
或者上面的变体,您使用颜色名称作为i18n键,如t("color.#{car.color.parameterize}")
,并在en.yml中
en:
color:
dark-blue: 'Dark Blue'
答案 1 :(得分:0)
这是一个你不能轻易避免的问题,如果要翻译的字符串是“标准的”你可以使用lulalala提出的解决方案(模型那个信息)。
我遇到了类似的问题(不是在Rails中,但它是一样的)我们通过定期自动复制重复内容翻译的任务“修复”了这个问题。