我知道Rails中内置的I18n,但是我如何为每个区域设置选择一个数据库字段呢?我的模型结构是这样的:
title #default (englisch) title_de #(german) title_it #(italian)
在我的模板中,我希望只能够写入
<%= @model.title %>
并且应该以正确的语言获取值。有没有一个插件或解决方案,以使用不同的字段,每个不同的区域设置与结构一样,我?
pdsfdshx1#
虽然您的数据库架构(不同的区域设置硬编码为表列)在我看来是错误的,但我认为您可以通过向模型中添加一个伪字段来实现您想要的结果,沿着:
# 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,它似乎与您的体系结构非常兼容......
title
q3aa05252#
请尝试使用:http://github.com/joshmh/globalize2这可能需要重命名列(使用不同的标准)。
czq61nw13#
目前,转换活动记录模型字段的最佳方法是使用https://github.com/shioyama/mobility
3条答案
按热度按时间pdsfdshx1#
虽然您的数据库架构(不同的区域设置硬编码为表列)在我看来是错误的,但我认为您可以通过向模型中添加一个伪字段来实现您想要的结果,沿着:
或者,如果您以某种方式使当前的语言环境对模型可见,您可以类似地覆盖默认的
title
访问器方法。编辑:您可以看一下http://github.com/iain/translatable_columns,它似乎与您的体系结构非常兼容......
q3aa05252#
请尝试使用:
http://github.com/joshmh/globalize2
这可能需要重命名列(使用不同的标准)。
czq61nw13#
目前,转换活动记录模型字段的最佳方法是使用https://github.com/shioyama/mobility