4 ##### This is website_post.py. This script deals with translations
5 ##### in the "make website" target.
12 ###### Translation data, move out, see create-weblinks-itexi.py
16 'Other languages': 'Jiné jazyky',
20 'Other languages': 'Andere Sprachen',
24 'Other languages': 'Otros idiomas',
27 'English': 'Français',
28 'Other languages': 'Autres langues',
32 'Other languages': 'Más nyelvek',
35 'English': 'Italiano',
36 'Other languages': 'Altre lingue',
40 'Other languages': '他の言語',
43 'English': 'Nederlands',
44 'Other languages': 'Andere talen',
48 'Other languages': '其他语言',
52 # needs at least: make -C po or make -C Documentation/po
55 #### this breaks on lilypond.org
56 # Keep some freakin' gettext compatibility
58 # import lilylib as ly;
60 #else: # poor mans translation
61 # def _ (string, lang=os.environ['LANG']):
62 # return translations.get (lang.split ('_')[0], {}).get (string, string)
64 #### this works on lilypond.org
66 return translations.get (lang.split ('_')[0], {}).get (string, string)
81 html_files = glob.glob( '*.html' )
84 ### messy way to get all languages
86 for file in html_files:
87 file_split = file.split('.')
88 if (len(file_split) == 2):
91 elif (len(file_split) == 3):
94 # make sure it's a translated language
97 langs = list(langs_set)
102 def addLangExt(filename, lang, ext):
105 for dir in exclude_manuals:
106 if (text.find(dir) >= 0):
108 if (not (exclude or (lang==""))):
113 def makeFooter (filename, currentLang):
114 footer = '''<p id="languages">
115 <!-- These links were autogenerated by %(me)s -->
123 str = '''<a href="%(file_name)s">%(language_name)s</a>'''
124 file_name = addLangExt (filename, lang, 'html')
125 language_name = _ ('English', lang)
126 return str % locals ()
127 lst = ', '.join ([link (lang) for lang in langs if lang != currentLang])
128 other = _ ('Other languages', currentLang)
129 browser_lang = _ ('About <a href="%s">automatic language selection</a>.', currentLang)
130 browser_language_url = "http://www.lilypond.org/website/misc/browser-language"
131 browser_language = browser_lang % browser_language_url
132 return footer % locals ()
134 def getLocalHref(line):
135 match = re.search(r'href=[\'"]?([^\'" >]+)', line)
137 url = match.group(0)[6:]
138 if (url[0:7] == "http://"):
152 for file in html_files:
153 ### we want to strip the .html and get the lang
154 file_split = file.split('.')
155 file_base = os.path.basename( file_split[0] )
156 if (len(file_split) == 2):
159 # possibly necessary for automatic language selection
160 file_symlink = file.replace(".html", ".en.html")
161 if not os.path.lexists (file_symlink):
162 os.symlink (file, file_symlink)
163 elif (len(file_split) == 3):
174 ### we need to replace parts of the file
175 lines = open(file).readlines()
177 outfile = open(file, 'w')
179 lang_footer = makeFooter (file_base, lang)
183 ### alter links as appropriate
184 link = getLocalHref(line)
187 if (not link.startswith("../doc/")):
188 if (link.endswith(".html")):
189 langlink = addLangExt(link[:-5], lang, "html")
190 line = line.replace(link, langlink)
191 if (link.endswith(".pdf")):
192 langlink = addLangExt(link[:-4], lang, "pdf")
193 line = line.replace(link, langlink)
194 ### add google tracker header
195 if (line.find("</head>") >= 0):
196 outfile.write("""<!-- Google tracking !-->
197 <script src="http://www.google-analytics.com/urchin.js"
198 type="text/javascript">
200 <script type="text/javascript">
201 _uacct = "UA-68969-1";
205 #### add google tracker goals
206 if (line.find("href=\"http://download.linuxaudio.org") >= 0):
207 # TODO: more ugly hardcoding to make releases hard. :(
208 if (line.find('2.16') >= 0):
209 line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.16\');\" href=')
210 elif (line.find('2.17') >= 0):
211 line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.17\');\" href=')
212 ### add language selection footer
213 if (line.find("<div id=\"verifier_texinfo\">") >= 0):
214 outfile.write("<div id=\"footer\">\n")
215 outfile.write( lang_footer )
216 if (line.find("</body") >= 0):
217 outfile.write("</div>\n")