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"
希望这能为您指明正确的方向!
祝你好运!
所以我要建一个 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"
希望这能为您指明正确的方向!
祝你好运!