2010-11-02 31 views

回答

-8

不,不可能。如果你使用I18,你需要有一个对应于该语言的文件,否则I18n会投诉。

当然,你可以设置你的environment.rb文件中的默认语言。应该是接近底部,你可以设置这个为任何你想要的语言,但在你的文件夹locales/你需要有一个相应的yml翻译。

1

大卫的回答是这个问题的解决方案,另一个(更详细的)的方式来做到这一点是重scue并返回密钥:

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

使用异常逻辑有条件的水流方式一般为不好的做法。从重构书:http://www.refactoring.com/catalog/replaceExceptionWithTest.html – 2013-04-10 19:45:57

+0

我同意,这是一般不好的做法,我也做了说大卫的解决方案是回落到正确的方式点一个默认值。当然,也有(实用的)情况下,您不希望应用程序暴露错误并使用合理的默认设置来提供更好的用户体验。我认为这是公平的偏离准则,并很好地处理错误时,情况就是如此。 – Steventux 2013-05-23 14:56:39

7

在导轨4上,您可以更改异常处理程序。

以下内容添加到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 

现在对你的意见,你可以这样做:

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

指南主题:http://guides.rubyonrails.org/i18n.html#using-different-exception-handlers

+0

有人可能只希望这只适用于特定的环境。添加这个作为初始化程序会限制可能性。但感谢您的链接。 – 2016-03-10 16:51:27