例如:
I18n.t('something')
应仅输出
something
如果翻译缺失。
答案 0 :(得分:26)
有可能: 请参阅Rails Internationalization (I18n) API上的 4.1.2默认值部分。
I18n.t :missing, :default => 'Not here'
# => 'Not here'
答案 1 :(得分:7)
在rails 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
答案 2 :(得分:1)
边注: 这可能有助于弄清楚Rails认为当前范围是什么(例如,当使用“.something”时)
http://unixgods.org/~tilo/Rails/which_l10n_strings_is_rails_trying_to_lookup.html
通过这种方式,您可以更好地避免因L10n文件/错误键中翻译字符串的错误放置而错过翻译
答案 3 :(得分:1)
大卫的回答是问题的正确解决方案,另一种(更详细)的方法是拯救并返回密钥:
def translate_nicely(key)
begin
I18n.translate!(key)
rescue
key
end
end
答案 4 :(得分:-9)
当然,您可以在environment.rb文件中设置默认语言。应该在底部附近,您可以将其设置为您想要的任何语言,但在locales/
文件夹中,您需要有相应的yml
翻译。