我如何展平Rails i18n文件

洛美芬

作为程序员,Rails I18n非常适合翻译。

但是有些客户希望在我们为他们制作的i18n文件中发表自己的意见,因此我们希望通过Excel发送一个“扁平化”版本以供他们完成。

例如,代替发送

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中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章