使用rails翻译数据库字段

时间:2010-03-19 15:45:11

标签: ruby-on-rails ruby ruby-on-rails-plugins

我知道Rails中内置的I18n,但是如何为每个语言环境选择一个数据库字段?

我的模型结构是这样的:

title    #default (englisch)
title_de #(german)
title_it #(italian)

在我的模板中,我希望只能写

<%= @model.title %>

并且应该使用正确的语言获得价值。

是否有插件或解决方案使用不同的语言环境设置使用不同的字段和类似我的结构?

2 个答案:

答案 0 :(得分:0)

尝试使用:

http://github.com/joshmh/globalize2

可能需要重命名您的列(使用不同的标准)。

答案 1 :(得分:0)

虽然您的数据库体系结构(不同的区域设置硬编码为表列)对我来说似乎不对,但我认为您可以通过向模型中添加伪字段来实现您想要的功能,其中包括:

# example not tested
class MyModel < ActiveRecord::Base
  def localized_title(locale)
    locale = locale == 'en' ? '' : '_' + locale
    read_attribute("title#{locale}".to_sym")
  end
end

或者,如果您以某种方式使模型可以看到当前的区域设置,则可以类似地覆盖默认的title访问方法。

编辑:您可以查看http://github.com/iain/translatable_columns,它似乎与您的架构非常兼容......