我怎样才能展平 rails i18n 文件
How can i flatten rails i18n files
Rails作为程序员,I18n 非常适合翻译。
但有些客户更喜欢在我们为他们制作的 i18n 文件中发表意见,因此我们想通过 Excel 发送一个 "flattened" 版本供他们完成。
例如,而不是发送
en:
sessions:
new:
login: "Ingresa"
signup: "Regístrate"
我们想要它
en.sessions.new.login "Ingresa"
en.sessions.new.signup "Regístrate"
哪种方法最好?
可以在此处查看扩展版本:https://repl.it/Dg4U/0
当您要求翻译时,I18n 会为您提供内容或哈希。
所以你的开始哈希可以是
I18n.t('.') # The root element
那你就可以应用这个代码了
results = []
def squash(previous_key = '', h)
h.each do |key,value|
this_key = "#{previous_key}.#{key.to_s}"
if value.is_a? Hash
squash(this_key, value)
elsif value.is_a? Array
results << "#{this_key}: #{value.inspect}"
else
results << "#{this_key}: #{value}"
end
end
end
squash 'en', I18n.t('.')
您可以在那里随意使用结果数组。
我只是将其打印在屏幕上并粘贴到 Excel.
Rails作为程序员,I18n 非常适合翻译。
但有些客户更喜欢在我们为他们制作的 i18n 文件中发表意见,因此我们想通过 Excel 发送一个 "flattened" 版本供他们完成。
例如,而不是发送
en:
sessions:
new:
login: "Ingresa"
signup: "Regístrate"
我们想要它
en.sessions.new.login "Ingresa"
en.sessions.new.signup "Regístrate"
哪种方法最好?
可以在此处查看扩展版本:https://repl.it/Dg4U/0
当您要求翻译时,I18n 会为您提供内容或哈希。
所以你的开始哈希可以是
I18n.t('.') # The root element
那你就可以应用这个代码了
results = []
def squash(previous_key = '', h)
h.each do |key,value|
this_key = "#{previous_key}.#{key.to_s}"
if value.is_a? Hash
squash(this_key, value)
elsif value.is_a? Array
results << "#{this_key}: #{value.inspect}"
else
results << "#{this_key}: #{value}"
end
end
end
squash 'en', I18n.t('.')
您可以在那里随意使用结果数组。 我只是将其打印在屏幕上并粘贴到 Excel.