Ruby on Rails - 多站点 - 自定义区域设置YML文件

时间:2017-12-04 13:35:52

标签: ruby-on-rails ruby locale multisite

我们正在运行一个白色标签类型的网站,其中有几个网站从一个代码库运行。

我想让locales文件包含基于参数从不同文件夹加载的所有网站文本。

让我们说我们有这两个网站:

  • site1@example.com (site1)
  • site2@example.com (site2)

我们正在阅读主持人并从我们的网站模型中确定brand_name

所以在locales文件中我想从正确的文件夹中加载它们,即

  • config/locales/site1/**/*.yml
  • config/locales/site2/**/*.yml

我似乎无法动态地执行此操作。我可以手动对config/application.rb文件进行更改,但它可以正常工作。但是,我希望能够确定要在application_controller.rb

中加载哪组语言环境文件

我可以设置语言环境文件的路径,还是这样太晚了?

1 个答案:

答案 0 :(得分:1)

你应该可以这样做:

application.rb中 config.i18n.load_path += Dir[Rails.root.join('config', 'locales', request.host, *.{rb,yml}').to_s]

这只会在具有域名的文件夹中加载区域设置文件。如果用户访问site2.com,它将在config / locales / site2.com / *中加载文件.yml