Globalize3中相同字符串是否需要重复翻译?

时间:2012-01-18 09:07:15

标签: ruby-on-rails globalization globalize3

我希望利用Globalize3来翻译我正在建设的项目中的模型。但是,尝试它看起来像每个模型,比如说Post

class Post < ActiveRecord::Base
    translates :title, :body
end

将完全独立于其他帖子,即标题必须翻译多次,即使标题与已翻译的标题相同。即系统已经知道它应该是。

据我所知,在许多情况下,字符串是唯一的,所以这不是问题,但是,想象一下具有颜色属性的汽车模型。如果系统有数百辆具有相同颜色的汽车,我应该多次翻译颜色吗?我想翻译一次,如果字符串相同,所有人都可以使用相同的翻译。

我是否误解了某些内容,或者这真的是Globalize3的工作原理吗?如果是这样,它真的听起来像是在字符串是唯一的时候,就像在博客中一样。

是否还有其他宝石能够满足我的需求?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

基本上就是Globalize的工作原理,每个模型记录的属性都被翻译并保存在翻译记录中。

您的问题可以通过规范化表来解决,因此颜色本身就变成了一个模型,并且您将其翻译出来。

我不会这样做,而且我不知道你的场景有什么宝石。我会改为做以下事情:

存储RGB值,然后在控制器中将其转换为颜色名称。然后,您可以使用Rails i18n模块进行翻译。

或者上面的变体,您使用颜色名称作为i18n键,如t("color.#{car.color.parameterize}"),并在en.yml中

en:
  color:
    dark-blue: 'Dark Blue'

答案 1 :(得分:0)

这是一个你不能轻易避免的问题,如果要翻译的字符串是“标准的”你可以使用lulalala提出的解决方案(模型那个信息)。

我遇到了类似的问题(不是在Rails中,但它是一样的)我们通过定期自动复制重复内容翻译的任务“修复”了这个问题。