【问题标题】:explicitly tell into what language to translate明确告诉翻译成什么语言
【发布时间】:2011-08-27 12:13:17
【问题描述】:

我像往常一样在语言环境中保存我的翻译文件。

现在我收到了一封不同语言的邀请邮件。

我希望用户选择应该用什么语言发送邮件,因为这与操作用户的语言无关,而与邮件接收者应该阅读的语言有关。

有没有办法明确告诉 Rails 选择哪种语言,例如 t(:my_string, :en)

我们的目标是,仅在一次调用 t 时临时翻译它。

这就是我需要的,在t() 命令中说明要使用什么语言。

【问题讨论】:

    标签: ruby-on-rails internationalization


    【解决方案1】:

    可以将:locale 选项传递给t 方法:

      t :my_string, locale: :de
    

    【讨论】:

      【解决方案2】:

      我认为您将明确需要将正确的语言设置为 I18n。
      您可以使用:I18n.locale = :en 设置您需要的语言。
      也看这里:I18n

      【讨论】:

      • 我知道,但这不是我问题的答案。我想临时从一个语言环境文件中选择,用t(:my_sentence, :en)之类的伪代码将:my_sentence只翻译一次到:en
      • 您不能这样进行翻译,tl 方法会监视 I18n.locale 值,因此您需要显式设置它。或者你可以覆盖t 方法:)
      • 至少不是,对,但此刻我确信会有我要求的解决方案 downvote-reverted - 抱歉,downvote 已被锁定
      【解决方案3】:

      您可以使用I18n 后端,它将语言环境作为第一个参数:

      I18n.backend.translate(:en, :my_string)

      【讨论】:

        【解决方案4】:

        对于未来的读者,如果他们想出于某种目的临时更改语言环境,I18n.with_locale(:*your_locale*) 可以达到目的。

        更多阅读,https://translation.io/blog/rails-i18n-with-locale

        【讨论】:

          【解决方案5】:

          要实现这一点,您需要获得接收方的区域信息。一旦你有了它,你可以将它传递给你的 rails 代码中的I18n.t 方法。

          preferred_locale = `Receiver.preferred_locale_name` || I18n.default_locale
          
          I18n.t('sample-string', locale: preferred_locale)
          

          【讨论】:

            猜你喜欢
            • 2023-01-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-06-19
            • 2011-04-03
            • 2014-11-04
            • 2011-01-04
            • 1970-01-01
            相关资源
            最近更新 更多