Add bulk yaml production to yaml2po
This commit is contained in:
parent
4a81f3a9cf
commit
902a44e630
2 changed files with 44 additions and 19 deletions
|
@ -24,7 +24,7 @@ def po2hash(f)
|
|||
path = []
|
||||
msgstr = ''
|
||||
f.each_line { |line|
|
||||
line = line.strip
|
||||
line.strip!
|
||||
if line[0..8] == 'msgctxt "'
|
||||
path = line[9..-2].split(':')
|
||||
elsif line[0..7] == 'msgstr "'
|
||||
|
|
|
@ -4,36 +4,61 @@
|
|||
# Use:
|
||||
# - To create a 'master' .pot
|
||||
# yaml2po > translations.pot
|
||||
# - To create a language's .po from scratch
|
||||
# yaml2po > de.po
|
||||
# - To create a partucular language's .po from existing translations
|
||||
# - To create a language's .po (includes from scratch)
|
||||
# yaml2po de > de.po
|
||||
# - To create all languages' .pos and a .pot (under /config/locales/po)
|
||||
# yaml2po --all
|
||||
|
||||
require "yaml"
|
||||
require "optparse"
|
||||
|
||||
LOCALE_DIR = File.dirname(__FILE__) + '/../../config/locales/'
|
||||
EN = YAML::load_file(LOCALE_DIR+'en.yml')
|
||||
|
||||
def iterate(hash, fhash={}, path='')
|
||||
def iterate(hash, fhash={}, path='', outfile=$stdout)
|
||||
postr = ''
|
||||
hash.each {|key, val|
|
||||
unless fhash.has_key? key
|
||||
fhash[key] = {}
|
||||
end
|
||||
fhash[key] = {} unless fhash.has_key? key
|
||||
if val.is_a? Hash
|
||||
iterate(val, fhash[key], path+key+':')
|
||||
fhash[key] = {} unless fhash[key].is_a? Hash
|
||||
iterate(val, fhash[key], path+key+':', outfile)
|
||||
else
|
||||
puts "msgctxt \"#{path}#{key}\""
|
||||
puts "msgid \"#{val}\""
|
||||
puts "msgstr \"#{fhash[key]}\""
|
||||
outfile.puts "msgctxt \"#{path}#{key}\""
|
||||
outfile.puts "msgid \"#{val}\""
|
||||
outfile.puts "msgstr \"#{fhash[key]}\""
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
language = ARGV[0]
|
||||
oth = {}
|
||||
if language
|
||||
oth = YAML::load_file(LOCALE_DIR+language+'.yml')
|
||||
oth = oth[language]
|
||||
def lang2po(lang, outfile=$stdout)
|
||||
puts lang
|
||||
oth = {}
|
||||
infile = LOCALE_DIR+lang+'.yml'
|
||||
if File.exists? infile
|
||||
oth = YAML::load_file(infile)
|
||||
oth = oth[lang]
|
||||
iterate(EN['en'], oth, '', outfile)
|
||||
else
|
||||
iterate(EN['en'], {}, '', outfile)
|
||||
end
|
||||
end
|
||||
|
||||
en = YAML::load_file(LOCALE_DIR+'en.yml')
|
||||
iterate(en['en'], oth)
|
||||
opt = ARGV[0]
|
||||
if opt == '--all'
|
||||
# Produce .po files for all langs, and a .pot template
|
||||
PO_DIR = LOCALE_DIR+'po/'
|
||||
Dir.mkdir(PO_DIR) unless File.directory?(PO_DIR)
|
||||
Dir.glob(LOCALE_DIR+"*.yml") {|filename|
|
||||
lang = File.basename(filename, '.yml')
|
||||
outfile = File.new(PO_DIR+"#{lang}.po", 'w')
|
||||
lang2po(lang, outfile)
|
||||
outfile.close
|
||||
}
|
||||
outfile = File.new(PO_DIR+"rails_port.pot", 'w')
|
||||
iterate(EN['en'], {}, '', outfile)
|
||||
outfile.close
|
||||
elsif opt
|
||||
lang2po(opt)
|
||||
else
|
||||
iterate(EN['en'])
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue