1

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

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

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

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

我是否误解了什么,或者这真的是 Globalize3 的工作原理吗?如果是这样,听起来它真的很适合当字符串是唯一的时候,比如在博客中。

是否有另一种可用的宝石可以满足我的需要?

谢谢你的帮助!

4

2 回答 2

2

本质上这就是 Globalize 的工作方式,每个模型记录的属性都被翻译并保存在翻译记录中。

你的问题可以通过规范化表格来解决,所以颜色本身就是一个模型,你可以翻译它。

不过,我不会那样做,而且我不知道适合您的场景的任何宝石。我会改为执行以下操作:

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

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

en:
  color:
    dark-blue: 'Dark Blue'
于 2012-02-16T06:28:26.433 回答
0

这是一个您无法轻易避免的问题,如果要翻译的字符串是“标准的”,您可以使用 lulalala 提出的解决方案(对该信息建模)。

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

于 2012-02-29T10:33:36.827 回答