2016-10-20 11 views
1

私はI18nファイルを第三者に翻訳するように送信しました。私の翻訳者はコンピュータに精通していないので、私たちはキー付きのスプレッドシートを作成しました。ドット表記で送信され、値は翻訳されました。例えばドット表記のキーをRubyのツリー構造のYAMLに変換します。

:私はYAMLファイルにそれを移動することができますどのように

es.models.parent: "Pariente" 
es.models.teacher: "Profesor" 
es.models.school: "Colegio" 

更新:ちょうど@tadmanのように、このはすでにYAMLです。だからあなたが一緒にいるなら、あなたは大丈夫です。

YAMLのツリー構造を使用する場合は、この質問に焦点を当てます。

+2

これはYAMLなので、それほど多くの作業はありません。 – tadman

+0

あなたは絶対に正しいです。私は前にそのフォーマットを見たことはありません、より多くの木の構造に慣れていた。 – Lomefin

答えて

1

まず、これをハッシュに変換します。

だから、以前の情報は、この中に移動:

tr = {} 
tr["es.models.parent"] = "Pariente" 
tr["es.models.teacher"] = "Profesor" 
tr["es.models.school"] = "Colegio" 

はその後、我々はちょうどより深いハッシュを作成する高度な。

result = {} #The resulting hash 

tr.each do |k, value| 
    h = result 
    keys = k.split(".") # This key is a concatenation of keys 
    keys.each_with_index do |key, index| 
    h[key] = {} unless h.has_key? key 
    if index == keys.length - 1 # If its the last element 
     h[key] = value   # then we only need to set the value 
    else 
     h = h[key] 
    end 
    end 
end; 

require 'yaml' 

puts result.to_yaml #Here it is for your YAMLing pleasure 
関連する問題