外部I18n语言环境路径(AWS)

Chr*_*fer 8 ruby-on-rails heroku amazon-s3 amazon-web-services

我有一个基于数据库的翻译系统,我的Rails应用程序很好用,除了它显然向数据库发送了很多请求.我只能对一定数量的请求使用缓存,但对我来说可行的选择是将转换表导出到YAML文件中,该文件可由系统读取.

我遇到的问题是我的应用程序在Heroku上,你无法写入该文件系统,我必须使用AWS(使用Carrierwave)来存储语言环境文件.我可以写信给AWS但是我无法让我的Rails应用程序从我的AWS存储中读取语言环境文件.

我尝试了以下设置(这只是试验和错误),但它不起作用.

application.rb中

config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
config.i18n.load_path += Dir["https://s3-eu-west-1.amazonaws.com/myapp/locales/", '*.{rb,yml}'.to_s]
config.i18n.available_locales = [:en, :se] 
Run Code Online (Sandbox Code Playgroud)

编辑:我当前(繁琐)的工作流程是创建数据库中的所有翻译(使用数据库翻译是绝对必须为我btw).然后我将表导出到yaml到我的AWS存储中.从那里我将语言环境文件下载到我的本地应用程序和locale-folder.我再次将它全部上传回Heroku.因为我无法写入Heroku文件系统.

如何设置我的应用程序以便从此外部源读取区域设置文件(例如https://s3-eu-west-1.amazonaws.com/myapp/locales/en.yml)?它甚至可能吗?如果没有,是否有解决方法?

小智 1

我觉得,您不能直接使用“Dir”添加外部翻译。因为它在本地工作。要解决此问题,您可以将外部文件加载到本地系统,然后使用 Dir 以相同的方式在 I18n 中访问它。无论如何,不​​利的一面是,要加载外部文件中的任何更改,您始终需要重新启动生产服务器。所以它与本地存储文件相同。