Adding initial language menu support. Adding method lang_menu. Changing templates.
authorFredrik Unger <fred@tree.se>
Sun, 10 Apr 2011 19:49:58 +0000 (21:49 +0200)
committerFredrik Unger <fred@tree.se>
Sun, 10 Apr 2011 19:49:58 +0000 (21:49 +0200)
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.. :)

src/tree-cutter.py
style/adropabove/index.en.html.tmpl
style/bluenightsky/index.en.html.tmpl
style/freggies/index.en.html.tmpl
style/turquoiseswirls/index.en.html.tmpl

index 14c94a76dadfd0790ebc2604a1cc5ae19ffbc962..7a5d6cf7d577c214616c2c5c7d6d0aea10e610e5 100755 (executable)
@@ -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 = "<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)
index 97590740fab26c1f88035df97814f8acf3b0aa61..b505ad41689f92c1e97692466417c5d14d129b43 100644 (file)
        </section><!-- end of #content -->
 
        <aside id="sidebar"><!-- sidebar -->
-         <h3>$levelname</h3>
+         <h3>Languages</h3>
+         $langmenu
+
+         <h3>Location</h3>
          $levelmenu
 
          <h3>More Stuff</h3>
index f9046043f8f22de10902fb041e8a564a00ba0f20..cb2aeac43a67ab995d69158c79a76e9bfa1dfe81 100644 (file)
            </ul>
            <div class="tab_container">
              <div id="tab1" class="tab_content">
-               <h3>$levelname</h3>
+               <h3>Languages</h3>
+               $langmenu
+
+               <h3>Location</h3>
                $levelmenu
              </div>
              <div id="tab3" class="tab_content">
index e59c1558784368ecc81ced0922dbcf38831b1fe5..e15029c6ecd11eb59eeac495ac7295b4f76eaf8e 100644 (file)
        </section><!-- end of #content -->
 
        <aside id="sidebar"><!-- sidebar -->
-         <h3>$levelname</h3>
+         <h3>Languages</h3>
+         $langmenu
+
+         <h3>Location</h3>
          $levelmenu
 
          <h3>More Stuff</h3>
index 4bf7bfb91852284748efcd0391c697302f25fe63..d057fba1510c96a924a91904a1002b3ec71b2cc4 100644 (file)
 
        <aside id="left"><!-- start left sidebar -->
          <div class="box">
-           <h3>$levelname</h3>
+           <h3>Languages</h3>
+           <div class="inner">
+             $langmenu
+           </div>
+
+           <h3>Location</h3>
            <div class="inner">
              $levelmenu
            </div>