我在我的Ruby on Rails 3.2应用程序中使用了来自Sven Fuchs的I18n Gem,虽然gem工作得很好但我遇到了一种情况,我不知道解决方案:
我有一个种子文件,其中包含我的MVC的基本翻译,并且当我在新机器上安装我的应用程序时播种。问题是,当其中一个翻译发生变化时,我必须转到我的种子文件,编辑它,在数据库中删除并重新种植它。哪个问题不是最好的方法。
此外,我的应用程序可以动态创建完整的MVC,当然也需要翻译。这些翻译只存储在数据库中。但是将它们存储在一个真实的文件中,将它们置于版本控制之下并根据需要导入或导出它们会很好。
所以,基本上我正在寻找的是我数据库中的翻译和我文件中的翻译之间的智能连接。所以我可以从另一个或vica verca填充一个并保持它们同步。
我还查看了像Globalize3或localeapp这样的解决方案,但它们似乎不合适。
总结一下,我所拥有的是:
我想要的是什么:
我确信我不可能是唯一需要这个的人......
非常感谢!
答案 0 :(得分:0)
以下是我如何解决问题更接近问题:
task :task_name => [:environment] do
file = "db/file_name.txt"
counter = 0
CSV.foreach(file, :headers => true, :col_sep => "^", :quote_char => "~") do |row|
identifier = row[0].to_i
model_name = ModelName.find_or_create_by_identifier(identifier)
I18n.locale = row[1]
model_name.name = row[3]
model_name.save!
end
end
请注意,标识符必须是唯一的标识符,该标识符不会更改并存在于文件和数据库中。在此示例中,列由“^”分隔,而quores为“〜”
正如@tigrish在评论中所说,插入文件和数据库并不是一个好主意,所以限制这一点很重要。
这些链接也可能有所帮助:
由于问题有点老,我希望它可以帮助别人。