import shutil
import pygraphviz as pgv
import glob
+import gettext
from amara import bindery
from amara.xslt import transform
from Cheetah.Template import Template
def template(self,sitemap):
htmlmenu = sitemap.gen_menu(self._lang,None,None)
levelmenu = sitemap.gen_menu(self._lang,self,"tree")
+ langmenu = sitemap.lang_menu(self._lang)
template = Template(file=style_tmpl,
searchList=[{'title':self._title},
{'menu':htmlmenu},
{'article':self._rendered_article},
{'levelmenu':levelmenu},
- {'levelname':'Menu'}])
+ {'langmenu':langmenu}])
outfile = tmptarget+'html'.join(self._file.rsplit('xml',1))
mkdir_p(os.path.dirname(outfile))
out = open(outfile, 'w')
def __init__(self):
self._file = 'sitemap.txt'
self._tree = Trie()
+ self._sitelang = set()
+ self._isocode = bindery.parse('/usr/share/xml/iso-codes/iso_639_3.xml')
+ self._tranlang = {}
def add_link(self, link):
tokens = filter(None,re.split(r'(^/\w*/|\w*/)',link))
link.prepare()
t2 = time.time()
print "Prepare [%5.2f s]" % (round(t2-t1,2))
- sitelang = set()
for link in self._tree:
- sitelang = sitelang.union(set(link.languages()))
+ self._sitelang = self._sitelang.union(set(link.languages()))
+ for tran in self._sitelang:
+ if tran != 'en':
+ self._tranlang[tran] = gettext.translation('iso_639_3', languages=[tran])
t3 = time.time()
print "Language [%5.2f s]" % (round(t3-t2,2))
for link in self._tree:
t5 = time.time()
print "Template [%5.2f s]" % (round(t5-t4,2))
sm = {}
- for l in sitelang:
+ for l in self._sitelang:
sm[l] = Page((l,'/sitemap'))
sm[l].set_article(self.gen_menu(l,None,"tree sitemap"))
sm[l].template(self)
t6 = time.time()
- print "Sitemap [%5.2f s]" % (round(t6-t5,2))
+ print "Sitemap [%5.2f s]" % (round(t6-t5,2))
def graph(self):
self._tree.graph()
def gen_menu(self,lang,page,cssclass):
return self._tree.menu(lang,page,cssclass)
+ def lang_menu(self,lang):
+ html = "<ul>"
+ for l in self._sitelang:
+ isoxml = u"//iso_639_3_entry[@*='"+l+"']"
+ ln = self._isocode.xml_select(isoxml)[0].name
+ if lang != 'en':
+ ln = self._tranlang[lang].gettext(ln)
+ html += '<li><a href="%s">%s</a></li>' % ('link'+'.'+l, ln)
+ html += "</ul>"
+ return html
+
def publish(self):
publish(tmptarget, args.output)
publish(args.style+"css", args.output)