#!/usr/bin/env python
# Quick and dirty script to generate googlecode wiki pages
import codecs
import xml.dom.minidom as dom
import os.path
import re
faqpath = "/Users/arne/oss/ics-openvpn.wiki"
header="""
") return ostr def genPage(javafile, lang): #{R.string.faq_howto_title, R.string.faq_howto}, out ="" out+= header for l in javafile: m = re.search("\{.*R.string.([a-z_]+),.*R.string.([a-z_]+)\}", l) if m: (title, body) = m.groups() out += "== %s ==\n" % getString(title,lang) out += "%s\n" % getString(body,lang) if body == "faq_system_dialogs_title": out += "%s\n" % getString("faq_system_dialog_xposed",lang) return out def genPageXML(faqdom,lang): out ="" #out+="#summary %s\n" % getString("faq_summary",lang) out+= header for xmld in faqdom.firstChild.childNodes: for xmle in xmld.childNodes: if xmle.nodeName == "TextView": style = xmle.getAttribute("style") textstyle = None if style == "@style/faqhead": textstyle = "== %s ==\n" elif style == "@style/faqitem": textstyle = "%s\n" atext = xmle.getAttribute("android:text") aid = xmle.getAttribute("android:id") if atext: atextid = atext.replace("@string/","") else: atextid = aid.replace("@+id/","") out += textstyle % getString(atextid,lang) return out strres={} def loadstrres(filename,lang): xmlstr = dom.parse(filename) strres[lang]={} for xmld in xmlstr.childNodes: for xmle in xmld.childNodes: if xmle.nodeName == "string": strname= xmle.getAttribute("name") strdata = xmle.firstChild.data strres[lang][strname]=strdata def main(): loadstrres("src/main/res/values/strings.xml","default") #faqdom = dom.parse("src/main/res/layout/faq.xml") faqdom = open("src/main/java/de/blinkt/openvpn/fragments/FaqFragment.java").readlines() faq= genPage(faqdom,"default") open(faqpath + "/FAQ.wiki","w").write(faq) for directory in os.listdir("src/main/res"): if directory.startswith("values-") and directory.find("-sw")==-1 and not directory.startswith("values-v"): lang = directory.split("-",1)[1] print lang loadstrres("src/main/res/values-%s/strings.xml" % lang,lang) langdir= "%s/%s" %(faqpath,lang) if lang=="zh-rCN": langdir= "%s/%s" %(faqpath,"zh-Hans") elif lang=="zh-rTW": langdir= "%s/%s" %(faqpath,"zh-Hant") if not os.path.exists(langdir): os.mkdir(langdir) faq= genPage(faqdom,lang) open("%s/FAQ.wiki" % langdir,"w").write(faq.encode("utf-8")) checkFormatString(lang) def checkFormatString(lang): for strid in strres["default"]: ostr = getString(strid,"default") tstr = getString(strid,lang) for f in ["%s", "%d", "%f"] + ["%%%d$s" % d for d in range(0,10)] + ["%%%d$d" % d for d in range(0,10)]: ino = ostr.find(f)==-1 int = tstr.find(f)==-1 if ino != int: print "Mismatch StringID(%s): " % lang,strid,"Original String:",ostr,"Translated String:",tstr if __name__=="__main__": main()