【发布时间】:2011-11-08 17:02:43
【问题描述】:
我一直在尝试使用 Ruby 对 i18n 翻译 YAML 文件进行排序,以便以更好和更有条理的方式管理新翻译,但我一直想知道是否有什么可以减轻这项任务的。
我找到了一个 YAML 文件编写器,因此我可以将哈希写入文件,但我的问题是正确排序哈希。如果我得到了哈希h,h.sort 返回一个数组,我还没有想出一个简单的方法来做到这一点。
我有这样的 YAML 文件:
pt-br:
global:
misc:
total: "Total"
all: "Todos"
close: "Fechar"
cancel: "Cancelar"
crud:
access: "Acessar"
back: "Voltar"
edit: "Editar"
confirm: "Confirmar"
send: "Enviar"
...
(文件比这个大)
但我想这样对它们进行排序:
pt-br:
global:
crud:
access: "Acessar"
back: "Voltar"
confirm: "Confirmar"
edit: "Editar"
send: "Enviar"
misc:
all: "Todos"
cancel: "Cancelar"
close: "Fechar"
total: "Total"
我认为一些简单的递归方法可以像这样帮助我:
def translation_sort(h)
if h.class == Hash
h = h.sort
h.each{|item| translation_sort(item)}
end
h
end
require "yaml"
h=YAML.load_file(File.open("~/pt-br.sample.yml"))
translation_sort(h)
【问题讨论】:
-
有相同的 sublime 插件吗?
标签: ruby sorting internationalization yaml