0

我在我的 Ruby on Rails 3.2 应用程序中使用来自 Sven Fuchs 的 I18n Gem,虽然 gem 运行良好,但我遇到了一种情况,我不知道解决方案:

当我在新机器上安装我的应用程序时,我有一个种子文件,其中包含我的 MVC 的基本翻译并且是种子文件。问题是当这些翻译之一发生变化时,我必须去我的种子文件,编辑它,在数据库中删除并重新设置种子。哪个问题不是最好的方法。

此外,我的应用程序可以动态创建完整的 MVC,当然也需要翻译。这些翻译只存储在数据库中。但最好将它们存储在真实文件中,将它们置于版本控制之下,并在需要时导入或导出它们。

所以,基本上我正在寻找的是我的数据库中的翻译和我的文件中的翻译之间的智能连接。所以我可以从另一个或 vica verca 中填充一个并保持它们同步。

我还查看了 Globalize3 或 localeapp 之类的解决方案,但它们似乎不适合。

总结一下,我所拥有的是:

  • 来自 Sven Fuchs 的 I18n Gem,带有我自己创建的后端
  • 一个种子文件,有时会发生变化,必须手动编辑,但会作为基本翻译的种子
  • 包含即时创建且不受版本控制或存储在某些文件中的翻译的数据库

我想要的是:

  • 我的种子文件和我的数据库中的翻译之间的同步
  • 一种将我的翻译置于版本控制之下的方法

我敢肯定,我不能是唯一需要这个的人......

感谢问候!

4

1 回答 1

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 在评论中所说,在文件和数据库中插入不是一个好主意,因此限制这一点很重要。

这些链接也可能有帮助:

由于这个问题有点老,我希望它可以帮助别人。

于 2013-09-26T00:03:35.557 回答