2010-11-02 3 views

Antwort

-8

nein, nicht möglich. Wenn Sie I18 benutzen, müssen Sie eine Datei haben, die der Sprache entspricht, sonst wird I18n sich beschweren.

Natürlich können Sie die Standardsprache in Ihrer Datei environment.rb festlegen. Sollte in der Nähe der Unterseite sein und Sie können dies für jede gewünschte Sprache einstellen, aber in Ihrem locales/ Ordner müssen Sie eine entsprechende yml Übersetzung haben.

1

Davids Antwort ist die richtige Lösung für die Frage, ein anderer (ausführlicherer) Weg ist es zu re scue und geben Sie den Schlüssel zurück:

def translate_nicely(key) 
    begin 
    I18n.translate!(key) 
    rescue 
    key 
    end 
end 
+1

Mit Logik Ausnahme für die bedingte Strömung im Allgemeinen ist schlechte Übung. Aus dem Refactoring-Buch: http://www.refactoring.com/catalog/replaceExceptionWithTest.html –

+0

Ich würde zustimmen, dass es in der Regel schlechte Praxis ist, habe ich auch darauf hingewiesen, Davids Lösung ist der richtige Weg, um zu zurückgreifen ein Standardwert Natürlich gibt es auch (pragmatische) Fälle, in denen Sie nicht möchten, dass die Anwendung einen Fehler aufdeckt und einen vernünftigen Standard verwendet, um eine bessere Benutzererfahrung bereitzustellen. Ich würde sagen, dass es fair ist, von den Richtlinien abzuweichen und Fehler gut zu handhaben, wenn dies der Fall ist. – Steventux

7

Auf Schienen 4 können Sie den Ausnahmebehandler ändern.

Fügen Sie die folgenden config/initializers/i18n.rb:

module I18n 
    class MissingTranslationExceptionHandler < ExceptionHandler 
    def call(exception, locale, key, options) 
     if exception.is_a?(MissingTranslation) 
     key 
     else 
     super 
     end 
    end 
    end 
end 

I18n.exception_handler = I18n::MissingTranslationExceptionHandler.new 

Jetzt auf Sie sieht Sie nur tun können:

zum Thema
<p><%= t "Not translated!" %></p> 

Guide: http://guides.rubyonrails.org/i18n.html#using-different-exception-handlers

+0

Man könnte dies nur für eine bestimmte Umgebung nur wünschen. Das Hinzufügen als Initialisierer begrenzt die Möglichkeiten. Aber danke für den Link. –

Verwandte Themen