]> git.donarmstrong.com Git - lilypond.git/blobdiff - scripts/build/website_post.py
issue 4813: replace urchin.js with analytics.js and fix redundant hostnames
[lilypond.git] / scripts / build / website_post.py
index f0b20b9fdef224ed713935d092c02ef20f837d76..9fba75445fd86e0e219fc52a2ba60764972cf495 100644 (file)
@@ -1,7 +1,7 @@
 #!@PYTHON@
 #-*- coding: utf-8 -*-
 
-##### This is web_post.py. This script deals with translations
+##### This is website_post.py. This script deals with translations
 ##### in the "make website" target.
 
 import sys
@@ -9,18 +9,66 @@ import os
 import glob
 import re
 
-###### Translation data
-lang_lookup = {
-    'fr': 'français',
-    'es': 'español',
-    '': 'english'
-}
+###### Translation data, move out, see create-weblinks-itexi.py
+translations = {
+    'ca': {
+        'English': 'Català',
+        'Other languages': 'Altres idiomes',
+        },
+    'cs': {
+        'English': 'Česky',
+        'Other languages': 'Jiné jazyky',
+        },
+    'de': {
+        'English': 'Deutsch',
+        'Other languages': 'Andere Sprachen',
+        },
+    'es': {
+        'English': 'Español',
+        'Other languages': 'Otros idiomas',
+        },
+    'fr': {
+        'English': 'Français',
+        'Other languages': 'Autres langues',
+        },
+    'hu': {
+        'English': 'Magyar',
+        'Other languages': 'Más nyelvek',
+        },
+    'it': {
+        'English': 'Italiano',
+        'Other languages': 'Altre lingue',
+        },
+    'ja': {
+        'English': '日本語',
+        'Other languages': '他の言語',
+        },
+    'nl': {
+        'English': 'Nederlands',
+        'Other languages': 'Andere talen',
+        },
+    'zh': {
+        'English': '中文',
+        'Other languages': '其他语言',
+        },
+    }
+
+# needs at least: make -C po or make -C Documentation/po
+HAVE_GETTEXT = False
+
+####  this breaks on lilypond.org
+# Keep some freakin' gettext compatibility
+#if HAVE_GETTEXT:
+#    import lilylib as ly;
+#    global _;_=ly._
+#else: # poor mans translation
+#    def _ (string, lang=os.environ['LANG']):
+#        return translations.get (lang.split ('_')[0], {}).get (string, string)
+
+#### this works on lilypond.org
+def _ (string, lang):
+    return translations.get (lang.split ('_')[0], {}).get (string, string)
 
-lang_other_langs = {
-    'es': 'Otros idiomas: ',
-    'fr': 'Autres langues : ',
-    '': 'Other languages: '
-}
 
 exclude_manuals = [
     '/music-glossary',
@@ -48,7 +96,7 @@ for file in html_files:
         # it's a translation
         lang = file_split[1]
     # make sure it's a translated language
-    if (not (lang == "en")):
+    if lang != "en":
         langs_set.add(lang)
 langs = list(langs_set)
 langs.sort()
@@ -66,26 +114,26 @@ def addLangExt(filename, lang, ext):
     text += "." + ext
     return text
 
-def makeFooter(filename, currentLang):
-    text = "<p id=\"languages\">\n"
-    text += lang_other_langs[currentLang]
-    for i in range(len(langs)):
-        lang = langs[i]
-        if (lang == currentLang):
-            continue
-        text += "<a href=\""
-       text += addLangExt(filename, lang, "html")
-        text += "\">"
-        text += lang_lookup[lang]
-        text += "</a>"
-        if (i < len(langs)-2):
-            text += ", "
-        else:
-            text += ".\n"
-    # TODO: add link to automatic language selection?
-    # still need to include this page in the new webpages somewhere
-    text += "</p>\n"
-    return text
+def makeFooter (filename, currentLang):
+    footer = '''<p id="languages">
+<!-- These links were autogenerated by %(me)s -->
+%(other)s: %(lst)s.
+<br>
+%(browser_language)s
+</p>
+'''
+    me = sys.argv[0]
+    def link (lang):
+        str = '''<a href="%(file_name)s">%(language_name)s</a>'''
+        file_name = addLangExt (filename, lang, 'html')
+        language_name = _ ('English', lang)
+        return str % locals ()
+    lst = ', '.join ([link (lang) for lang in langs if lang != currentLang])
+    other = _ ('Other languages', currentLang)
+    browser_lang = _ ('About <a href="%s">automatic language selection</a>.', currentLang)
+    browser_language_url = "http://www.lilypond.org/website/misc/browser-language"
+    browser_language = browser_lang % browser_language_url
+    return footer % locals ()
 
 def getLocalHref(line):
     match = re.search(r'href=[\'"]?([^\'" >]+)', line)
@@ -114,7 +162,7 @@ for file in html_files:
         lang = ''
         # possibly necessary for automatic language selection
         file_symlink = file.replace(".html", ".en.html")
-        if (not (os.path.exists(file_symlink))):
+        if not os.path.lexists (file_symlink):
             os.symlink (file, file_symlink)
     elif (len(file_split) == 3):
         # it's a translation
@@ -132,24 +180,47 @@ for file in html_files:
     os.remove(file)
     outfile = open(file, 'w')
 
-    lang_footer = makeFooter(file_base, lang)
-
+    lang_footer = makeFooter (file_base, lang)
 
     ### alter file
     for line in lines:
         ### alter links as appropriate
         link = getLocalHref(line)
         if (link != ""):
-            # quesitonable
-            if (link.endswith(".html")):
-               langlink = addLangExt(link[:-5], lang, "html")
-                line = line.replace(link, langlink)
-            if (link.endswith(".pdf")):
-               langlink = addLangExt(link[:-4], lang, "pdf")
-                line = line.replace(link, langlink)
+            # questionable
+            if (not link.startswith("../doc/")):
+                if (link.endswith(".html")):
+                    langlink = addLangExt(link[:-5], lang, "html")
+                    line = line.replace(link, langlink)
+                if (link.endswith(".pdf")):
+                    langlink = addLangExt(link[:-4], lang, "pdf")
+                    line = line.replace(link, langlink)
+        ### add google tracker header
+        if (line.find("</head>") >= 0):
+            outfile.write("""<!-- Google tracking !-->
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-68969-1', 'auto');
+  ga('send', 'pageview');
+
+</script>
+""");
+        #### add google tracker goals
+        if (line.find("href=\"http://download.linuxaudio.org") >= 0):
+            # TODO: more ugly hardcoding to make releases hard. :(
+            if (line.find('2.16') >= 0):
+                line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.16\');\" href=')
+            elif (line.find('2.17') >= 0):
+                line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.17\');\" href=')
         ### add language selection footer
-        if (line.find("<!-- FOOTER -->") >= 0):
+        if (line.find("<div id=\"verifier_texinfo\">") >= 0):
+            outfile.write("<div id=\"footer\">\n")
             outfile.write( lang_footer )
+        if (line.find("</body") >= 0):
+            outfile.write("</div>\n")
         outfile.write(line)
     outfile.close()
-