【问题标题】:Multi language with Rails app to prepare YML file使用 Rails 应用程序准备 YML 文件的多语言
【发布时间】:2016-03-29 21:05:45
【问题描述】:

我正在使用 Ruby on Rails 构建一个汽车租赁应用程序,目前我一直在使用英语进行编码。基本上我有一个用户和汽车模型,用户可以在其中登录、登录、注销并列出他们的汽车。

我想实现另一种语言,允许用户从下拉列表中选择英语或西班牙语。我有从控制器操作返回的默认错误消息,例如“不能为空白,已使用”等。我还有自定义 JS 消息,例如如果用户成功添加汽车,jQuery 返回“您的汽车已发布” .最后,我还有 Flash 消息。但是我不知道如何根据用户的语言选择来处理 YML 文件中的错误、自定义 JS 和 Flash 消息。

【问题讨论】:

    标签: ruby-on-rails internationalization globalize


    【解决方案1】:

    这实际上取决于您的 YAML 文件的结构,例如,对于 ActiveRecord 错误消息:

    it:
      errors:
        format: "%{attribute} %{message}"
    
        messages: &errors_messages
          empty: "non può essere vuoto"
          blank: "non può essere lasciato in bianco"
    

    如果您想在视图之外访问 I18n(也称为国际化),您可以使用 I18n.t(your_key),这实际上是您可以在视图中访问的助手。例如,如果您希望在控制器中翻译通知,您可以执行以下操作:

    def your_action
      redirect_to other_path, notice: I18n.t("notices.successful_action")
    end
    

    然后在你的 YAML 中有对应的结构:

    en:
      notices:
        successful_action: "You did it!"
    

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      我不知道应该如何根据用户的语言选择来处理yml文件中的错误、自定义js和flash消息

      • 对于 Rails 应用程序相关的一般翻译,包括错误消息,Rails i18n gem 已为您提供服务。您可以在the gem's locale file 中查看已翻译的语言。
      • 要特别覆盖错误消息或创建新错误消息,请参阅 looking up translationstranslations for ActiveRecord models 上的 Rails 指南部分,了解应将翻译放在 YAML 文件中的哪些键下。
      • 对于 flash 消息,请查看 this StackOverflow question,了解如何在控制器中使用惰性查找(例如 t('.notice'))。
      • 为了能够像在 Ruby 中一样使用 Javascript 文件中的翻译(例如 I18n.t("my_translation"),并能够在 YAML 文件中使用其他 Rails 翻译来管理这些翻译,请查看i18n-js gem。设置说明在 README 文件中。

      【讨论】:

        猜你喜欢
        • 2019-12-09
        • 1970-01-01
        • 1970-01-01
        • 2012-05-30
        • 2016-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多