13

I18n.translate配列の変換に問題があります。

具体的には、この配列を取得しました。

module TaskEnums
  OCTAVE_BANDS = [:hz63, :hz125, :hz250, :hz500, :hz1000, :hz2000, :hz4000, :hz8000, :hz16000]
end

YAMLファイルに次の翻訳があります。

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"

私の見解では、ユーザーが頻度を選択できるドロップダウン メニューを表示したいと考えています。

<%= form_for(@task) do |f| %>
  <%= f.select :frequency, TaskEnums::OCTAVE_BANDS %>
<% end %>

個々のシンボルを で変換できることはわかっていますt :symbolが、このアプローチは配列では機能しないようです (たとえば、t TaskEnums::OCTAVE_BANDS必要なことを実行しません)。

OCTAVE_BANDS翻訳がドロップダウンに表示されるように、配列を翻訳する方法を知っている人はいますか? これは一般的な問題に違いないように思われるので、簡単な解決策があると思います(そして願っています!)... 誰かがそれを成し遂げる方法を提案できますか?

どうもありがとう、

D.

4

2 に答える 2

20

通話scopeにオプションを使用:I18n.t

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"]
于 2012-09-09T17:34:07.113 に答える