【问题标题】:How to make Rails infer english translations from YAML translation key names automatically?如何让 Rails 自动从 YAML 翻译键名推断英文翻译?
【发布时间】:2015-02-11 14:32:58
【问题描述】:

有没有办法让 Rails 自动从键名推断英文翻译?

目前我必须明确编写翻译,否则它只会在视图中输出en, devise.confirmations.new.resend_confirmation_instructions

我目前必须在config/locales/en.yml 文件中写入的内容:

en:
  devise:
    confirmations:
      new:
        resend_confirmation_instructions: "Resend confirmation instructions."

我想要什么:

en:
  devise:
    confirmations:
      new:
        resend_confirmation_instructions: 

并且视图应该只输出“重新发送确认指令”。这是直接从那个键推断出来的。

【问题讨论】:

  • 没有办法做到这一点(据我所知),因为这完全违背了翻译的意义。但是在生产中,如果缺少翻译,Rails 将显示“重新发送确认说明”
  • 啊,它会在生产中这样做吗?我不知道。顺便说一句,从英文翻译键获取英文文本并不完全是翻译。当您的代码库和翻译键都是英文时,这只是避免重复工作的一种便捷方法。
  • 为此您可以配置备用语言。在这里查看:stackoverflow.com/a/7886246/488195
  • @dgilperez Fallbacks 仅用于在不存在其他翻译时回退到英文翻译。这不是为了从翻译键推断英文翻译...
  • 嘿@Magne 你最终为此选择了什么方法?

标签: ruby-on-rails internationalization rails-i18n


【解决方案1】:

您始终可以编写自己的异常处理程序:

#config/initializers/i18n.rb

module I18n
  class MissingTranslationExceptionHandler < ExceptionHandler
    def call(exception, locale, key, options)
      if exception.is_a?(MissingTranslation)
        key.split('.').last.try(:humanize)
      else
        super
      end
    end
  end
end

I18n.exception_handler = I18n::MissingTranslationExceptionHandler.new

您可以阅读更多on the guides

【讨论】:

    猜你喜欢
    • 2020-09-29
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2013-08-07
    • 2011-04-07
    • 1970-01-01
    相关资源
    最近更新 更多