Ich habe ein Datenbank-basiertes Übersetzungssystem für meine Rails-App, das großartig funktioniert, außer dass es offensichtlich eine Menge Anfragen an die Datenbank sendet. Ich kann den Cache nur für eine bestimmte Anzahl von Anfragen verwenden, aber eine praktikable Option für mich ist, die Übersetzungstabelle in eine YAML-Datei zu exportieren, die vom System gelesen werden kann.Externer I18n Gebietsschemapfad (AWS)
Das Problem, das ich habe, ist, dass meine App auf Heroku ist und Sie nicht in dieses Dateisystem schreiben können, muss ich AWS (mit Carrierwave) verwenden, um die Locale-Dateien zu speichern. Ich kann nach AWS schreiben, aber ich kann meine Rails-App nicht dazu bringen, die Locale-Dateien von meinem AWS-Speicher zu lesen.
Ich habe die folgende Einstellung versucht (was nur Versuch und Irrtum ist), aber es funktioniert nicht.
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]
Edit: Mein aktueller (langweilig) Workflow ist es, alle Übersetzungen in der Datenbank zu erstellen (Datenbank Übersetzungen verwendet, ist ein absoluter Muss für mich btw). Dann exportiere ich die Tabelle nach Yaml in meinen AWS-Speicher. Von dort lade ich die Locale-Dateien in meine lokale App und in den Locale-Ordner. Ich lade alles wieder auf Heroku hoch. Alles nur, weil ich nicht in das Heroku-Dateisystem schreiben kann.
Wie kann ich meine App so einrichten, dass die Locale-Dateien (z. B. https://s3-eu-west-1.amazonaws.com/myapp/locales/en.yml) von dieser externen Quelle gelesen werden? Ist es überhaupt möglich? Wenn nicht, gibt es einen Workaround?
Warum stellen Sie die Locale-Dateien nicht als Teil der App bereit und beziehen sich auf sie aus dem kurzlebigen Dateisystem? –
Es scheint, als ob meine Antwort auf dich verschwunden wäre. Im Grunde tue ich bereits, was Sie vorschlagen (wie in meinem Bearbeitungstext), aber ich erstelle oft neue Elemente, die neue Übersetzungen benötigen, und ich muss das in der Live-Version tun. Das bedeutet, dass ich immer die gesamte DB-> Yaml-> AWS-> local-> Heroku-Schleife machen muss. – Christoffer