2010-11-02 4 views

Répondre

-8

non, pas possible. Si vous utilisez I18, vous devez avoir un fichier correspondant à la langue sinon I18n se plaindra.

Bien sûr, vous pouvez définir la langue par défaut dans votre fichier environment.rb. Devrait être près du fond et vous pouvez définir cela pour la langue que vous voulez, mais dans votre dossier locales/, vous aurez besoin d'avoir une traduction correspondante yml.

1

La réponse de David est la bonne solution à la question, une autre façon (plus verbeuse) de le faire est de re sculptez et renvoyez la clé:

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

Utilisation de la logique d'exception pour le débit conditionnel est généralement mauvaise pratique. Extrait du livre Refactoring: http://www.refactoring.com/catalog/replaceExceptionWithTest.html –

+0

Je serais d'accord pour dire que c'est généralement une mauvaise pratique, je tiens également à dire que la solution de David est la bonne façon de se replier sur une valeur par défaut. Bien sûr, il y a aussi des cas (pragmatiques) où vous ne voulez pas que l'application expose une erreur et utilise une valeur par défaut raisonnable pour fournir une meilleure expérience utilisateur. Je dirais qu'il est juste de s'éloigner des lignes directrices et de gérer les erreurs bien quand c'est le cas. – Steventux

7

Sur les rails 4, vous pouvez modifier le gestionnaire d'exceptions.

Ajouter ce qui suit à 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 

maintenant vous vues que vous pouvez juste faire:

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

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

+0

On pourrait vouloir ceci seulement pour un environnement spécifique seulement. L'ajouter en tant qu'initialiseur limite les possibilités. Mais merci pour le lien. –

Questions connexes