我在一个编辑用户表单中创建了一个select元素:
t.select :identification_type, User.identification_type_hash
哈希是
{ :type_1 => 1, :type_2 => 2, ... }
我需要本地化类型名称。但我没有找到将翻译添加到语言环境目录中的yml文件的正确方法。
我试过了
en_US:
type_1: Translationg of type 1
type_2: Translationg of type 1
active_record:
attributes:
identification_type:
type_1: Translationg of type 1
type_2: Translationg of type 1
identification_type:
type_1: Translationg of type 1
type_2: Translationg of type 1
上面没有人工作。 (虽然其他东西的翻译仍然有效。) 我在ROR文件中找不到解决方案。
那么本地化这些哈希值的正确方法是什么?
答案 0 :(得分:5)
您需要自己翻译密钥,但这很容易。假设您有以下语言环境文件:
en_US:
identification_type:
type_1: Translationg of type 1
type_2: Translationg of type 1
然后,您的select
标记可能如下所示:
t.select(:identification_type,
User.identification_type_hash.map { |k,v| [t(k, scope: :identification_type), v] })
当然,对于视图来说这看起来很复杂,因此您可以将此代码移动到视图助手:
module ApplicationHelper
def user_identification_type_options
User.identification_type_hash.map do |k,v|
[t(k, scope: :identification_type), v]
end
end
end
因此,您的select
标记如下所示:
t.select(:identification_type, user_identification_type_options)
答案 1 :(得分:0)
在您创建identification_type_hash
的地方添加翻译。
您可以通过I18n.t()
访问Rails中的任何位置的翻译功能。 Documentation