#!/usr/bin/env python # Quick and dirty script to generate googlecode wiki pages import codecs import xml.dom.minidom as dom import os.path faqpath = "/Users/arne/oss/ics-openvpn.wiki" header=""" This page is autogenerated. Do not edit = Frequently aksed questions = """ def getString(strid,lang): ostr="" if strid in strres[lang]: ostr=strres[lang][strid] else: ostr=strres["default"][strid] ostr = ostr.replace("<","<") ostr = ostr.replace(">",">") ostr = ostr.replace("\\\"","\"") ostr = ostr.replace("\\'","'") ostr = ostr.replace("\\n","

") return ostr def genPage(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("res/values/strings.xml","default") faqdom = dom.parse("res/layout/faq.xml") faq= genPage(faqdom,"default") open(faqpath + "/FAQ.wiki","w").write(faq) for directory in os.listdir("res"): if directory.startswith("values-"): lang = directory.split("-",1)[1] print lang loadstrres("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")) if __name__=="__main__": main()