Added mo-po converter, added pot-po converter
This commit is contained in:
154
web/locale/hst_convert_pure_po_pot.rb
Executable file
154
web/locale/hst_convert_pure_po_pot.rb
Executable file
@@ -0,0 +1,154 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
if ARGV.length()<2
|
||||
puts "Use: #{$0} path_to_pure_po po|pot"
|
||||
exit 1
|
||||
end
|
||||
|
||||
if ARGV[1] == "po"
|
||||
|
||||
msgid_h = {}
|
||||
msgid_id = "111"
|
||||
msgid_tmp = ""
|
||||
pre_msgid = []
|
||||
|
||||
# Соберем список привязок msgid к файлам
|
||||
IO.foreach("hestiacp.pot") do |line|
|
||||
pre_msgid << line if line =~ /^#/
|
||||
if line =~ /^msgid /
|
||||
msgid_tmp = line.split(' ', 2)[1]
|
||||
msgid_id = ""
|
||||
else
|
||||
if line =~ /^msg/
|
||||
if msgid_id == ""
|
||||
msgid_id = msgid_tmp
|
||||
msgid_h[msgid_id]=pre_msgid unless msgid_id == '""'
|
||||
pre_msgid=[]
|
||||
end
|
||||
else
|
||||
if msgid_id == ""
|
||||
msgid_tmp += line
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Вставим привязки к файлам перед msgid
|
||||
pre_msgid_w = []
|
||||
msgid_id = "111"
|
||||
msgid_tmp = ""
|
||||
f = File.open("#{ARGV[0]}.new", "w")
|
||||
if f.nil?
|
||||
puts "Error opening file #{ARGV[0]}.new"
|
||||
exit 1
|
||||
end
|
||||
IO.foreach("#{ARGV[0]}") do |line|
|
||||
if line =~ /^msgid /
|
||||
msgid_tmp = line.split(' ', 2)[1]
|
||||
msgid_id = ""
|
||||
pre_msgid_w = []
|
||||
pre_msgid_w << line
|
||||
else
|
||||
if line =~ /^msg/
|
||||
if msgid_id == ""
|
||||
msgid_id = msgid_tmp
|
||||
if msgid_id != '""'
|
||||
if msgid_h[msgid_id] != nil
|
||||
msgid_h[msgid_id].each do |item|
|
||||
f.puts item
|
||||
end
|
||||
end
|
||||
end
|
||||
pre_msgid_w.each do |item|
|
||||
f.puts item
|
||||
end
|
||||
f.puts line
|
||||
else
|
||||
f.puts line
|
||||
end
|
||||
else
|
||||
if msgid_id == ""
|
||||
msgid_tmp += line
|
||||
pre_msgid_w << line
|
||||
else
|
||||
f.puts line
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
f.close()
|
||||
|
||||
else
|
||||
msgid_id = "111"
|
||||
msgid_tmp = ""
|
||||
post_msgid = {}
|
||||
|
||||
# Соберем список привязок msgid к файлам
|
||||
IO.foreach("#{ARGV[0]}") do |line|
|
||||
if line =~ /^msgid /
|
||||
msgid_tmp = line.split(' ', 2)[1]
|
||||
msgid_id = ""
|
||||
else
|
||||
if line =~ /^msg/
|
||||
if msgid_id == ""
|
||||
msgid_id = msgid_tmp
|
||||
end
|
||||
if msgid_id != '""'
|
||||
if post_msgid[msgid_id].nil?
|
||||
post_msgid[msgid_id] = []
|
||||
end
|
||||
post_msgid[msgid_id] << line
|
||||
end
|
||||
else
|
||||
if msgid_id == ""
|
||||
msgid_tmp += line
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Вставим привязки к файлам перед msgid
|
||||
msgid_id = "111"
|
||||
msgid_tmp = ""
|
||||
msgid_check = {}
|
||||
f = File.open("#{ARGV[0]}.new", "w")
|
||||
if f.nil?
|
||||
puts "Error opening file #{ARGV[0]}.new"
|
||||
exit 1
|
||||
end
|
||||
IO.foreach("hestiacp.pot") do |line|
|
||||
if line =~ /^msgid /
|
||||
msgid_tmp = line.split(' ', 2)[1]
|
||||
msgid_id = ""
|
||||
f.puts line
|
||||
else
|
||||
if line =~ /^msgstr/
|
||||
if msgid_id == ""
|
||||
msgid_id = msgid_tmp
|
||||
end
|
||||
if msgid_check[msgid_id].nil?
|
||||
msgid_check[msgid_id]="1"
|
||||
if post_msgid[msgid_id].nil?
|
||||
f.puts line
|
||||
else
|
||||
post_msgid[msgid_id].each do |item|
|
||||
f.puts item
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
if msgid_id == ""
|
||||
msgid_tmp += line
|
||||
f.puts line
|
||||
else
|
||||
f.puts line
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
f.close()
|
||||
end
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user