I18n 根据语言环境调用不同的模型属性?

I18n to call different Model Attribute depending on Locale?

所以我要建一个 on-line 商店,我想要两种语言选项,英语和西班牙语。

我正在使用 I18n,就像您通常对我所有的静态文本和标题等所做的那样。

但是,我有一个产品模型,可以创建要在网站上列出的新产品。这有像 :name_en 和 :name_es, :description_en 和 :description_es 等字段。

当管理员上传新产品时,他们显然需要添加英语和西班牙语文本。

因为我只有 2 个语言环境,所以我想做的是调用

    <%= Product.name_"#{I18n.locale.downcase}" %>

但显然这行不通。我如何,或者我只能插入一个方法或属性?

我是不是错过了一些明显的东西,只是以错误的方式去做,或者有没有办法按照我的想法去做?

非常感谢任何帮助。

谢谢

您可以使用send方法。尝试类似的东西:

<%= Product.send("name_#{I18n.locale.downcase}") %>

简单解释一下,以下等同:

string = "Hello"

string.upcase
# => "HELLO"

string.send("upcase")
# => "HELLO"

希望这能为您指明正确的方向!

祝你好运!