如何使用 i18n 键作为 Rails 3 中的默认翻译?

发布于 2024-09-29 20:20:43 字数 122 浏览 2 评论 0原文

例如:

I18n.t('something')

应输出。

something

仅当翻译丢失时才

For example:

I18n.t('something')

should output only

something

if the translation missing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

走过海棠暮 2024-10-06 20:20:43

有可能:
请参阅 Rails 国际化 (I18n) API 中的4.1.2 默认值部分。

I18n.t :missing, :default => 'Not here'
# => 'Not here'

It is possible:
See section 4.1.2 Defaults at Rails Internationalization (I18n) API.

I18n.t :missing, :default => 'Not here'
# => 'Not here'
dawn曙光 2024-10-06 20:20:43

在 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

On rails 4 you can change the exception handler.

Add the following to 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

Now on you views you can just do:

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

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

巾帼英雄 2024-10-06 20:20:43

旁注:
这可能有助于弄清楚Rails认为当前范围是什么(例如,当使用“.something”时)

http ://unixgods.org/~tilo/Rails/which_l10n_strings_is_rails_trying_to_lookup.html

这样你就可以更好地避免由于在 L10n 文件中错误放置翻译字符串/不正确的密钥而丢失翻译

side-note:
this might help figuring out what Rails thinks the current scope is (e.g. when using ".something")

http://unixgods.org/~tilo/Rails/which_l10n_strings_is_rails_trying_to_lookup.html

this way you can better avoid having missing translations because of incorrect placing of translations strings in the L10n-file / incorrect keys

别低头,皇冠会掉 2024-10-06 20:20:43

大卫的答案是问题的正确解决方案,另一种(更详细)的方法是救援并归还密钥:

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

David's answer is the right solution to the question, another (more verbose) way to do it is to rescue and return the key:

def translate_nicely(key)
  begin
    I18n.translate!(key)
  rescue
    key
  end
end
仅此而已 2024-10-06 20:20:43

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

当然,您可以在environment.rb文件中设置默认语言。应该位于底部附近,您可以将其设置为您想要的任何语言,但在您的 locales/ 文件夹中,您将需要有相应的 yml 翻译。

nope, not possible. If you use I18 you need to have a file that corresponds to the language otherwise I18n will complain.

Of course you can set the default language in your environment.rb file. Should be near the bottom and you can set this for whatever language you want but in your locales/ folder you will need to have a corresponding yml translation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文