Dynamisches Laden von I18n-Übersetzungen von einem Edelstein in eine Rails Engine

8

Ich habe ein Juwel (TranslationsGem) erstellt, das ich in mehreren Projekten verwende (eine Engine und eine Rails-App). Dieser Edelstein erstellt mehrere Hashes, die in das I18n-Backend geladen werden.

Eine Methode #store_dynamic_translations richtet mehrere Hashes ein, die in das I18n-Backend geladen werden. Es funktioniert grundsätzlich so:

%Vor%

Meine Tests bestätigen, dass die Methode und das Laden der Übersetzung korrekt funktioniert. Ich kann es jedoch nicht in der Host-Engine und der Rails-App zum Laufen bringen. In meiner Testumgebung muss ich die Methode in meinem test_helper ausführen, um sicherzustellen, dass die Übersetzungen korrekt geladen sind. Außerhalb der Testumgebung scheint es nicht zu funktionieren. Ich kann überprüfen, dass die Methode ausgeführt wird, aber die Übersetzungen werden nicht geladen.

Ich habe viele Dinge stundenlang ausprobiert, wie die Methode in der Engine initializer und ActiveSupport-Hooks verwenden. In der Host-Rails-App habe ich versucht, die #store_dynamic_translations in einem Initialisierer auszuführen, aber ohne Erfolg.

Seltsamerweise funktioniert es, wenn ich den #store_dynamic_translations in meinem Rails-App-Controller oder in der Ansicht ausführe. Gibt es eine Möglichkeit, dies beim Hochfahren der App einzurichten?

BEARBEITEN: Ich habe ein Beispiel-Repository eingerichtet, das das aktuelle Setup enthält .

  1. Ein Gem, das Übersetzungen dynamisch in das I18n-Backend speichert.

  2. Eine Rails Engine, die den Edelstein lädt und seine Übersetzungen zur Verfügung haben soll

In wird der fragliche Test auskommentiert MyI18n::Translations.store_dynamic_translations Direktive macht den Test bestanden. Aber es sollte möglich sein, dies innerhalb eines Engine-Initialisierers zu tun Ich denke?

    
richard 25.06.2016, 18:37
quelle

1 Antwort

0

Nach Emill Kampps Vorschlag war der korrekte Hook after_initialize . Ich habe dies in engine.rb angegeben:

%Vor%     
richard 07.07.2016, 14:38
quelle