openstreetmap-website/script/locale/po2yaml
2009-06-05 22:27:21 +00:00

50 lines
938 B
Ruby
Executable file

#!/usr/bin/env ruby
# po2yaml, for converting gettext .po to the RoR translation YAML
# Use:
# - To create a language's yaml from a given po file
# po2yaml de.po > de.yml
require "yaml"
def add_translation(hash, keys, value)
key = keys.shift
if keys.empty?
hash[key] = value
else
unless hash.has_key? key
hash[key] = {}
end
add_translation(hash[key], keys, value)
end
hash
end
def po2hash(f)
trs = {}
path = []
msgstr = ''
f.each_line { |line|
line.strip!
if line[0..8] == 'msgctxt "'
path = line[9..-2].split(':')
elsif line[0..7] == 'msgstr "'
msgstr = line[8..-2]
end
if !path.empty? and !msgstr.empty?
add_translation(trs, path, msgstr)
path = []
msgstr = ''
end
}
trs
end
filename = ARGV[0]
pofile = File.open(filename, "r")
langcode = File.basename(filename, '.po')
tr = {langcode => po2hash(pofile)}
print tr.to_yaml