Joh*_*ohn 5 database ruby-on-rails internationalization ruby-on-rails-3
我正在寻找有关使用国际化的最佳实践的一些提示和建议.我一直在四处寻找,但我对我读到的内容并不满意.我读过的大部分文章都集中在使用I18n的yml文件,这在我的情况下是行不通的.
我目前有几个带英文文本的数据库表.其中一些表的文本字段长度只有几句,有些则是6段以上的文本.我想用西班牙语这些字段.
我目前正在考虑的方法是使用I18n-active记录gem并拥有1个翻译表,该应用程序将用于应用程序中的所有翻译
class CreateTranslations < ActiveRecord::Migration
def self.up
create_table :translations do |t|
t.string :locale
t.string :key
t.text :value
t.text :interpolations
t.boolean :is_proc, :default => false
t.timestamps
end
end
def self.down
drop_table :translations
end
end
Run Code Online (Sandbox Code Playgroud)
这是最好的方法吗?
一方面,所有翻译都将很好地存储在一个表中.另一方面,每次用户向数据库查询I18n内容时.应用程序将在原始表中查询密钥,然后查询转换表.另一个值得关注的是,翻译表将是巨大的,有一个庞大的行,因为它会被存储为应用程序(从章节标题[三言两语]文本的整个页面的一切所有的翻译量.
任何信息表示赞赏.谢谢
在db中存储翻译并不是一个太糟糕的解决方案.不要害怕大表 - 数据库是为此而制作的!只需确保正确配置索引并尽可能缓存.
另一个更快,可能更好的解决方案是使用Redis作为I18n的后端.请参阅http://guides.rubyonrails.org/i18n.html#using-different-backends和http://railscasts.com/episodes/256-i18n-backends.
无论你在哪里存储翻译,都没有必要尝试自己管理插值,因为I18n库处理得非常好(除非你做的是真正定制的东西,就是这样).