15

Im Moment habe ich die folgenden vier Dateien in meinem config/locales meiner Stammanwendung:Organisation von Locale-Dateien in Rails-Anwendung

-en.yml 
-de.yml 
-simple_form.en.yml 
-simple_form.de.yml 

In meinem application.rb, die in einem spec residiert/dummy Ordner zum testen der Anwendung gem I die folgende Code-Zeile haben, die die Übersetzungen werden Abrufen scheint als erwartet:

# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. 
config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] 
config.i18n.default_locale = :de 

I n Ich möchte Struktur in die Dateistruktur meines Locales-Ordners einführen, aber wenn ich die zusätzlichen Ordner hinzufüge und den Ladepfad in der application.rb ändere, bekomme ich Übersetzung nicht gefunden Fehler. Hier ist mein Versuch:

Versuch einschließlich Struktur in config/locales meiner Stammanwendung:

-views 
    -en.yml 
    -de.yml 
-models 
    -en.yml 
    -de.yml 
-forms 
    -simple_form.en.yml 
    -simple_form.de.yml 

Und mein Lastpfad im application.rb geändert:

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

Gemäß der folgenden Schienen Anleitung: http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-domain-name

+0

Bitte zeigen Sie uns den spezifischen Fehler Sie bekommen. Haben Sie einen Stack-Trace, den Sie teilen können? –

+0

In der Ansicht erhalte ich die Zeichenfolge: Übersetzung fehlt: en.new_tenant.header, ich sehe keine Fehlermeldungen – Jay

+0

Könnte das Problem sein, dass die application.rb-Datei in einem spec-Ordner für Testzwecke befindet und dass meine Config-Ordner wird nicht auf der Stammebene geladen und ich sehe nur die Übersetzungen, da die Config/Locales automatisch hinzugefügt werden, aber keine Unterordner? – Jay

Antwort

10

Um die Host-Anwendung zu testen, müssen Sie den i18n.load_path in den Konfigurationsordner Ihrer Haupt-App und nicht die Dummy-Spezifikation für Testzwecke ändern. Code wie folgt:

config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')] 
config.i18n.default_locale = :en 
+6

Für mich war die Zeichenfolge: 'config.i18n.load_path + = Dir [Rails.root.join ('config', 'locales', '**', '*. {rb, yml}'). to_s] ' – franzlorenzon

+0

Verwenden Sie' Rails.root' lieber als einen fest codierten Root-Pfad – Dorian

7

ich ein ähnliches Problem hatte, löste ich es durch diese Linie meiner application.rb Config hinzu:

# load the subfolders in the locales 
config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/*.{rb,yml}"] 
1

Folgende Optionen alle für mich gearbeitet

config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/*.yml"] 

config.i18n.load_path += Dir["#{Rails.root.to_s}/config/locales/**/*.{rb,yml}"] 

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

Nach Neustart der Webserver natürlich ...