用Rails I18n翻译Ruby枚举符号



因为我是Ruby和Rails的新手,我不完全确定如何最好地表达这个问题,但这是我的情况。我的任务是将一个用Rails构建的日语web应用程序翻译成英语,我主要是通过在config/locale/ja中创建一长串单词/短语来做到这一点。Yml和en。并使用t('…')在视图中引用它们。

然而,我现在有一个下拉选择表单从模型的枚举中提取值的情况。

模型中的相关行:

enum gender: %i(男性 女性)

视图中的相关行:

<%= f.select :gender, User.genders.keys.to_a, {}, { class: "form-control" } %>

我一直在尝试各种各样的东西,但收效甚微,包括试图使用涉及enum_help gem的解决方案。

如果可能的话,我想避免改变模型中的行,因为这是一个更大的代码库的一部分,我不太了解,但如果有必要,我必须这样做。我怎样才能最容易地把下拉框翻译成日语中的"中文"one_answers"中文",而英语中的"中文"one_answers"中文"呢?

config/locales/en为例,您将有:

views:
  genders:
    male: "Man"
    female: "Lady"

那么在你看来:

<%= f.select :gender, User.genders.keys.collect { |g| [t("views.genders.#{g.downcase}"), g] }, {}, { class: "form-control" } %>

这很简单。

  1. 安装gem translate_enum

gem install translate_enum

  • 在模型中包含TranslateEnum
  • class Gender < ActiveRecord::Base
    include TranslateEnum
    enum gender: { male: 0, female: 1}
    
  • 视图文件:
  • f.select :gender, options_for_select(Gender.translated_statuses.map {|translation, k, _v| [translation, k] })

  • 最后在config/locales/en.yml文件中:

    activerecord:
     attributes:
       gender:
         gender_list:
           male: "Male"
               female: "Female"
    
  • 希望这工作良好!

    相关内容

    • 没有找到相关文章

    最新更新