20

ich dieses Problem i18n Massagewie Schienen i18n Ausweichfunktion nutzen zu können

activerecord: 
    notices: 
    messages: 
     success: 
     create: "Something was created" 
    models: 
     user: 
     success: 
      create: "Thanks for registration" 

I18n.t("activerecord.notices.models.user.success.create") 
# => "Thanks for registration" 


I18n.t("activerecord.notices.models.book.success.create") 
# => "translation missing: de, activerecord, notices, models, book, success, create" 

Ich weiß nicht, warum das Buch Modell nicht den Rückfall bekommt haben. Ich habe config.i18n.fallbacks = true eingestellt. Ich bin mit Rails 3

+0

der Schlüssel Buch in der Datei nicht vorhanden ist. Sehen Sie sich das Gleiche an und versuchen Sie es erneut, indem Sie den Buchschlüssel hinzufügen. –

+0

Ja, es ist nicht da, aber das ist der Hauptgrund, einen Fallback zu verwenden. Sie brauchen keine Rückschläge, wenn Sie alles definieren. aber ich kann das nicht tun. es ist zu viel nutzlose Arbeit für mich. – antpaw

+0

Wäre nett, wenn Sie die Frage bearbeiten, um mehr zu klären. In welchem ​​Gebietsschema befinden Sie sich jetzt und in welchem ​​Gebietsschema möchten Sie zurückfallen? (scheint, als hättest du dein eigenes deutsches Gebietsschema, aber warum schreibst du Englisch?) – lulalala

Antwort

22

Wenn ein : default Option gegeben ist, wird sein Wert zurückgegeben, wenn die Übersetzung fehlt:

I18n.t :missing, :default => 'Not here' 
# => 'Not here' 

Mehr Infos here

+0

ok danke, das scheint bei mir zu funktionieren "I18n.t (" activerecord.notices.models. # {object.to_s.downcase }. # {type} ",: default => I18n.t (" activecord.notices.messages. # {type} "))" – antpaw

17

Haben Sie Fallbacks aktiviert für Dein Backend? Unter der Annahme, einfach es ist (basierend auf yml in Beispiel):

setzen diese in einem Initialisierer:

require "i18n/backend/fallbacks" 
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks) 

https://github.com/svenfuchs/i18n/wiki/Fallbacks

+0

Für Schienen, einfach in eine Datei wie config/initializers/i18n_fallbacks.rb –

+0

Das funktionierte für mich auf Rails 2 – lobati

+0

Das funktionierte für mich auf Rails 2 - nach dem Einschluss des 'i18n' Gems. –

82

ich in config-set/application.rb in der Regel

config.i18n.fallbacks =[:de, :fr, :en] 

So Sie können die Reihenfolge des Fallbacks verlangsamen.

Aber achten Sie in einigen Umgebungen/*. Rb die Konfiguration wird überschrieben.

+15

Dies sollte die akzeptierte Antwort sein. – samvermette

+1

Dieses ** sollte nicht ** die akzeptierte Antwort sein, das OP bat um Schlüssel-Fallback (AKA-Standard), nicht für Sprach-Fallback. – rewritten

+0

@rewritten können Sie ein bisschen mehr klären? Ich habe das Gefühl, dass ich diese beiden nicht sehr deutlich unterscheiden kann, und finde auch keine Online-Diskussion darüber. – lulalala

16

In Schienen 3+ wird diese in der Config gesetzt/Umgebungen Dateien:

# Enable locale fallbacks for I18n (makes lookups for any locale fall back to 
    # the I18n.default_locale when a translation can not be found) 
    config.i18n.fallbacks = true 
+0

Dies ist nicht mehr standardmäßig vorhanden, kann aber noch hinzugefügt werden. – tybro0103

4

Ich glaube, der beste Weg, um eine fehlende Zeichenfolge zu handhaben, ist ein Standardgebietsschema angezeigt werden, anstatt eine Fehlermeldung .

Fügen Sie diese Zeile in application.rb hinzu, um auf das englische Gebietsschema zurückzugreifen.

config.i18n.fallbacks = [:en] 

Falls Sie länderspezifische Fallbacks angeben möchten, können Sie die folgenden Befehle verwenden:

config.i18n.fallbacks = {:de => [:de,:en], :en => [:en,:de]} 

Beachten Sie auch, dass Sie aktivieren und auf Ihrer Umgebung basiert Fallbacks deaktivieren. Während also auf der Entwicklung könnte es sinnvoll sein, einen Fehler angezeigt hat, können Sie stattdessen Fallbacks in Ihrem environments/production.rb mit folgendem aktivieren:

config.i18n.fallbacks = true 
+1

Zur Zeit stimme ich nicht zu. Wenn ein Mitentwickler einen Übersetzungsschlüssel ändert oder löscht und die App später implementiert, erhalten Sie möglicherweise die Standardgebietsschema-Zeichenfolge und haben keine Kenntnis von dem Fehler. Später klagt der Kunde. Es könnte besser sein, eine Testspezifikation zu erstellen, um sicherzustellen, dass alle Schlüssel für eine bestimmte Sprache vorhanden sind –