From: Fredrik Unger Date: Sun, 10 Apr 2011 19:49:58 +0000 (+0200) Subject: Adding initial language menu support. Adding method lang_menu. Changing templates. X-Git-Tag: v1.0~6 X-Git-Url: https://source.tree.se/git?p=treecutter.git;a=commitdiff_plain;h=c382f50f4d6b3285dcdac852f39227b336d530d2 Adding initial language menu support. Adding method lang_menu. Changing templates. Link needs to be properly intergrated to the html href, translation started earlier in sitemap and saved per language. 'en' special case as it is the original language of iso_639_3.xml Updating templates with a Language menu item instead of a Level name Levelname can be maintained in the template, translations are dynamic as more pages in other languages gets created. Problems will arrise when a language page is missing. This is first tests.. :) --- diff --git a/src/tree-cutter.py b/src/tree-cutter.py index 14c94a7..7a5d6cf 100755 --- a/src/tree-cutter.py +++ b/src/tree-cutter.py @@ -11,6 +11,7 @@ import argparse import shutil import pygraphviz as pgv import glob +import gettext from amara import bindery from amara.xslt import transform from Cheetah.Template import Template @@ -148,12 +149,13 @@ class Page(): 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') @@ -290,6 +292,9 @@ class Sitemap(): 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)) @@ -319,9 +324,11 @@ class Sitemap(): 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: @@ -333,12 +340,12 @@ class Sitemap(): 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() @@ -346,6 +353,17 @@ class Sitemap(): def gen_menu(self,lang,page,cssclass): return self._tree.menu(lang,page,cssclass) + def lang_menu(self,lang): + html = "" + return html + def publish(self): publish(tmptarget, args.output) publish(args.style+"css", args.output) diff --git a/style/adropabove/index.en.html.tmpl b/style/adropabove/index.en.html.tmpl index 9759074..b505ad4 100644 --- a/style/adropabove/index.en.html.tmpl +++ b/style/adropabove/index.en.html.tmpl @@ -42,7 +42,10 @@