繁体   English   中英

用 Rails I18n 翻译 Ruby 枚举符号?

[英]Translating Ruby enum symbols with Rails I18n?

因为我对 Ruby 和 Rails 很陌生,所以我不完全确定如何最好地表达这个问题,但这是我的情况。 我的任务是将一个用 Rails 构建的日语网络应用程序翻译成英语,我主要是通过在 config/locales/ja.yml 和 en.yml 文件中创建一长串单词/短语并引用来做到这一点使用 t('...') 在视图中显示它们。

但是,我现在遇到的情况是下拉选择表单从模型的枚举中提取值。

模型中的相关行:

enum gender: %i(男性 女性)

视图中的相关行:

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

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

如果可能,我想避免更改模型中的行,因为这是我不太了解的更大代码库的一部分,但如果有必要,我将不得不这样做。 我怎样才能最轻松地将下拉框翻译为日语中的“男性”和“女性”,而英语中的“男性”和“女性”?

例如,在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 安装 translate_enum

  1. 在模型中包含 TranslateEnum
 class Gender < ActiveRecord::Base include TranslateEnum enum gender: { male: 0, female: 1}
  1. 在视图文件中:

f.select :gender, options_for_select(Gender.translated_statuses.map {|translation, k, _v| [translation, k] })

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

     activerecord: attributes: gender: gender_list: male: "Male" female: "Female"

希望这工作正常!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM