1

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

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

4

2 回答 2

0

它实际上取决于您的 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!"

希望这可以帮助!

于 2016-03-29T23:26:09.420 回答
0

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

  • 对于 Rails 应用程序相关的一般翻译,包括错误消息,Rails i18n gem为您提供。您可以在gem 的语言环境文件中看到已翻译的语言。
  • 有关具体覆盖错误消息或创建新错误消息的信息,请参阅 Rails 指南中有关查找ActiveRecord 模型的翻译和翻译的部分,以查看应将翻译放在 YAML 文件中的哪些键下。
  • 对于 flash 消息,请查看这个 StackOverflow 问题,了解如何t('.notice')在控制器中使用惰性查找(例如)。
  • 为了能够像在 Ruby 中一样使用 Javascript 文件中的翻译(例如I18n.t("my_translation"),并且能够使用其他 Rails 翻译来管理 YAML 文件中的这些翻译,请查看i18n-js gem。说明在 README 文件中。
于 2016-03-30T11:02:10.370 回答