首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails:如何对字符串数组进行i18n?

Rails:如何对字符串数组进行i18n?
EN

Stack Overflow用户
提问于 2012-09-10 01:25:24
回答 2查看 7.1K关注 0票数 13

我在使用I18n.translate转换数组时遇到了问题。

具体地说,我有这个数组,

代码语言:javascript
运行
复制
module TaskEnums
  OCTAVE_BANDS = [:hz63, :hz125, :hz250, :hz500, :hz1000, :hz2000, :hz4000, :hz8000, :hz16000]
end

我在一个YAML文件中有以下翻译。

代码语言:javascript
运行
复制
en:
  TaskEnums:
    OCTAVE_BANDS:
        hz63: "63 Hz"
        hz125: "125 Hz"
        hz250: "250 Hz"
        hz500: "500 Hz"
        hz1000: "1000 Hz"
        hz2000: "2000 Hz"
        hz4000: "4000 Hz"
        hz8000: "8000 Hz"
        hz16000: "16000 Hz"

在我看来,我想显示一个允许用户选择频率的下拉菜单。

代码语言:javascript
运行
复制
<%= form_for(@task) do |f| %>
  <%= f.select :frequency, TaskEnums::OCTAVE_BANDS %>
<% end %>

我知道我可以用t :symbol翻译单个符号,但这种方法似乎不适用于数组(例如,t TaskEnums::OCTAVE_BANDS不能做我需要的事情)。

有谁知道如何转换OCTAVE_BANDS数组,使转换结果显示在下拉列表中?这似乎是一个常见的问题,所以我假设(并希望如此!)有一个简单的解决方案。有没有人能建议如何完成这件事?

非常感谢,

D。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-10 01:34:07

I18n.t呼叫使用scope选项:

代码语言:javascript
运行
复制
t TaskEnums::OCTAVE_BANDS, scope: 'TaskEnums.OCTAVE_BANDS'
# => ["63 Hz", "125 Hz", "250 Hz", "500 Hz", "1000 Hz", "2000 Hz", "4000 Hz", "8000 Hz", "16000 Hz"]
票数 19
EN

Stack Overflow用户

发布于 2015-03-11 08:25:13

jdoe的回答对我很有效!我在表单输入字段中使用了它。

代码语言:javascript
运行
复制
f.input :state, as: :radio, collection: t(Model.states.map(&:name), scope: 'attributes.states')
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12341231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档