【问题标题】:How can internationalized(translated) array's value of rails model?国际化(翻译)数组的rails模型值如何?
【发布时间】:2021-10-11 06:26:11
【问题描述】:

此部分存在于模型中,我们将其用于表单提交。

GENDER_TYPES = %w[Male Female Other]

【问题讨论】:

  • 你能在这里详细说明你的问题吗?有点不清楚。
  • 我有一个字段名称性别。我使用这些数组值来提交表单。但我需要使用性别翻译。就像英文一样,显示 [Male, female and other] 是可以的,但是当网站是孟加拉语时,它会显示 নারী পুরুষ 和其他。
  • 你可能想在前端做这个翻译。不在模型上。将其以您想要的任何语言(或整数枚举)格式存储在数据库中,然后在将其显示给用户之前进行翻译。如何翻译取决于您。

标签: ruby-on-rails internationalization rubygems


【解决方案1】:

我不确定这是否适合您,但在这种情况下我所做的是使用 (Rails enum)。在您的模型中:

class MyModel < ApplicationRecord
  enum gender: [:male, :female, :other]
end

我的 ApplicationRecord 类:

   class ApplicationRecord < ActiveRecord::Base
     self.abstract_class = true

     def self.enum_t(enum_name, enum_value)
       I18n.t("activerecord.attributes.#{model_name.i18n_key}.#{enum_name.to_s.pluralize}.#{enum_value}")
     end
   end

在我的 en.yml 中:

  en:
    activerecord:
      attributes:
        my_model:
          genders:
            male: Male
            female: Female
            other: Other

在我看来创建一个选择:

f.select :gender, MyModel.genders.keys.collect { |gender| [MyModel.enum_t(:gender, gender), gender] }

或显示动作:

= MyModel.enum_t(:gender, my_model.gender)

【讨论】:

    猜你喜欢
    • 2014-09-24
    • 2016-11-30
    • 2012-10-17
    • 1970-01-01
    • 2019-06-08
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多