]> git.donarmstrong.com Git - lilypond.git/blob - scripts/build/create-weblinks-itexi.py
Merge remote-tracking branch 'origin/translation' into staging
[lilypond.git] / scripts / build / create-weblinks-itexi.py
1 #!@PYTHON@
2 # -*- coding: utf-8 -*-
3 # create-weblinks-itexi.py
4
5 """ when being called on lilypond.org, pass it the location of the
6 top source dir on the command-line. """
7
8 import sys
9 import os
10 import glob
11
12 ### translation data -- shouldn't be here; see issue
13 ### http://code.google.com/p/lilypond/issues/detail?id=1050
14
15 import langdefs
16 # GUB only has python 2.4 !!!
17 # langs = [i.code if i.code != 'en' else '' for i in langdefs.WEB_LANGUAGES]
18 langs = []
19 for lang in langdefs.WEB_LANGUAGES:
20     if lang.code == 'en':
21         langs.append('')
22     else:
23         langs.append(lang.code)
24
25
26 # these links are relative from /website/ on lilypond.org
27 depth = "../"
28
29 # Get/update node translations
30 '''
31 for i in cs de es fr hu it ja nl zh; do
32     echo "'"$i"': {"
33     (echo '--' ; grep -nH -B1 translationof Documentation/$i/web/* ) \
34         | pytt '^--\n.*@(?:unnum|sub)[^ ]* (.*)\n.*@translationof (.*)\n' "'\2': '\1',\n" \
35         | grep -E 'Source|Learning|Glossary|Essay|Notation|Usage|Snippets|Web|Changes|Extending|Internals|Contributor'
36     echo "},"
37 done
38 '''
39
40 translations = {
41     'de': {
42         'Source': 'Quellen',
43         'Learning': 'Einführung',
44         'Music glossary': 'Glossar',
45         'Essay': 'Aufsatz',
46         'Notation': 'Notation',
47         'Usage': 'Benutzung',
48         'Snippets': 'Schnipsel',
49         'Web': 'Web',
50         'Changes': 'Änderungen',
51
52         'Extending': 'Erweitern',
53         'Internals': 'Interna',
54         'Contributor': 'Beitragen',
55
56         ' (split HTML)': ' (geteiltes HTML)',
57         ' (big HTML)': ' (großes HTML)',
58
59         'Regression tests for ': 'Regressionstests für ',
60         'PDF of regtests for ': 'PDF der Regressionstests für ',
61         'abc2ly Regression tests for ': 'abc2ly Regressionstests für ',
62         'PDF of abc2ly regtests for ': 'PDF der abc2ly Regressionstests für ',
63         'lilypond-book Regression tests for ': 'lilypond-book Regressionstests für ',
64         'PDF of lilypond-book regtests for ': 'PDF der lilypond-book Regressionstests für ',
65         'MusicXML Regression tests for ': 'MusicXML Regressionstests für ',
66         'PDF of MusicXML regtests for ': 'PDF der MusicXML Regressionstests für ',
67
68         'Doc tarball for ': 'Dokumentation tar-gepackt für ',
69         ' (did not exist in 2.12)': ' (nicht existent in 2.12)',
70         },
71     'es': {
72         'Source': 'Código fuente',
73
74         'Learning': 'Aprendizaje',
75         'Music glossary': 'Glosario',
76         'Essay': 'Ensayo',
77         'Notation': 'Notación',
78         'Usage': 'Utilización',
79         'Snippets': 'Fragmentos',
80         'Web': 'Web',
81         'Changes': 'Cambios',
82         'Extending': 'Extensión',
83         'Internals': 'Funcionamiento interno',
84         'Contributor': 'Guía del colaborador',
85
86 # keep the spaces!
87         ' (split HTML)': ' (HTML seccionado)',
88         ' (big HTML)': ' (HTML monolítico)',
89
90         'Regression tests for ': 'Pruebas de regresión para ',
91         'PDF of regtests for ': 'Pruebas en PDF para ',
92         'abc2ly Regression tests for ': 'Pruebas de regresión de abc2ly para ',
93         'PDF of abc2ly regtests for ': 'Pruebas de abc2ly en PDF para ',
94         'lilypond-book Regression tests for ': 'Pruebas de regresión de lilypond-book para ',
95         'PDF of lilypond-book regtests for ': 'Pruebas de lilypond-book en PDF para ',
96         'MusicXML Regression tests for ': 'Pruebas de regresión de MusicXML para ',
97         'PDF of MusicXML regtests for ': 'Pruebas de MusicXML en PDF para ',
98
99         'Doc tarball for ': 'Tarball de la documentación para ',
100         ' (did not exist in 2.12)': ' (no existía en la versión 2.12)',
101      },
102     'fr': {
103         'Source': 'Sources',
104
105         'Learning': 'Initiation',
106         'Music glossary': 'Glossaire',
107         'Essay': 'Essai',
108         'Notation': 'Notation',
109         'Usage': 'Utilisation',
110         'Snippets': 'Morceaux choisis',
111         'Web': 'Web',
112         'Changes': 'Nouveautés',
113         'Extending': 'Extension',
114         'Internals': 'Propriétés internes',
115         'Contributor': 'Guide du contributeur',
116
117 # keep the spaces!
118         ' (split HTML)': ' (HTML multipages)',
119         ' (big HTML)': ' (HTML en page unique)',
120
121         'Regression tests for ': 'Tests de régression pour ',
122         'PDF of regtests for ': 'PDF des tests de régression pour ',
123         'abc2ly Regression tests for ': 'Tests de régression de abc2ly pour ',
124         'PDF of abc2ly regtests for ': 'PDF des tests de régression de abc2ly pour ',
125         'lilypond-book Regression tests for ': 'Tests de régression de lilypond-book pour ',
126         'PDF of lilypond-book regtests for ': 'PDF des tests de régression de lilypond-book pour ',
127         'MusicXML Regression tests for ': 'Tests de régression de MusicXML pour ',
128         'PDF of MusicXML regtests for ': 'PDF des tests de régression de MusicXML pour ',
129
130         'Doc tarball for ': 'Archive de la documentation pour ',
131         ' (did not exist in 2.12)': ' (non disponible pour la version 2.12)',
132         },
133     'hu': {
134         'Source': 'Forrás',
135         'Learning': 'Tankönyv',
136         'Music glossary': 'Fogalomtár',
137         'Essay': 'Esszé',
138         'Notation': 'Kottaírás',
139         'Usage': 'Használat',
140         'Snippets': 'Kódrészletek',
141         'Web': 'Web',
142         'Changes': 'Változások',
143         'Extending': 'Bővítés',
144         'Internals': 'Belső működés',
145         'Contributor': 'Közreműködés',
146
147         ' (split HTML)': ' (HTML oldalak)',
148         ' (big HTML)': ' (egy nagy HTML oldal)',
149
150         'Regression tests for ': 'Regressziós tesztek - verzió: ',
151         'PDF of regtests for ': 'PDF formátumban - verzió: ',
152         'abc2ly Regression tests for ': 'abc2ly regressziós tesztek - verzió: ',
153         'PDF of abc2ly regtests for ': 'PDF formátumban - verzió: ',
154         'lilypond-book Regression tests for ': 'lilypond-book regressziós tesztek - verzió: ',
155         'PDF of lilypond-book regtests for ': 'PDF formátumban - verzió: ',
156         'MusicXML Regression tests for ': 'MusicXML regressziós tesztek - verzió: ',
157         'PDF of MusicXML regtests for ': 'PDF formátumban - verzió: ',
158
159         'Doc tarball for ': 'Tömörített csomag - verzió: ',
160         ' (did not exist in 2.12)': ' (nem létezett a 2.12-es verzióban)',
161         },
162     'it': {
163         'Source': 'Sorgenti',
164         'Learning': 'Apprendimento',
165         'Music glossary': 'Glossario',
166         'Essay': 'Saggio',
167         'Notation': 'Notazione',
168         'Usage': 'Uso',
169         'Snippets': 'Frammenti',
170         'Web': 'Web',
171         'Changes': 'Cambiamenti',
172         'Extending': 'Estendere',
173         'Internals': 'Funzionamento interno',
174         'Contributor': 'Guida del collaboratore',
175
176 # keep the spaces!
177         ' (split HTML)': ' (HTML multipagina)',
178         ' (big HTML)': ' (HTML pagina unica)',
179
180         'Regression tests for ': 'Test di collaudo per ',
181         'PDF of regtests for ': 'PDF dei test di collaudo per ',
182         'abc2ly Regression tests for ': 'Test di collaudo di abc2ly per ',
183         'PDF of abc2ly regtests for ': 'PDF dei test di collaudo di abc2ly per ',
184         'lilypond-book Regression tests for ': 'Test di collaudo di lilypond-book per ',
185         'PDF of lilypond-book regtests for ': 'PDF dei test di collaudo di lilypond-book per ',
186         'MusicXML Regression tests for ': 'Test di collaudo di MusicXML per ',
187         'PDF of MusicXML regtests for ': 'PDF dei test di collaudo di MusicXML per ',
188
189         'Doc tarball for ': 'Archivio della documentazione per ',
190         ' (did not exist in 2.12)': ' (non disponibile per la versione 2.12)',
191         },
192     'ja': {
193         'Source': 'ソース',
194         'Learning': '学習',
195         'Music glossary': '用語集',
196         'Essay': 'エッセー',
197         'Notation': '記譜法',
198         'Usage': '使用方法',
199         'Snippets': 'コード断片集',
200         'Web': 'Web',
201         'Changes': '変更点',
202
203         #TODO
204         'Extending': '拡張',
205         'Internals': '内部リファレンス',
206         'Contributor': '貢献者向けガイド',
207
208 # keep the spaces!
209         ' (split HTML)': ' (ページ毎に分割された HTML)',
210         ' (big HTML)': ' (1 つの大きな HTML)',
211
212         'Regression tests for ': '回帰テスト バージョン ',
213         'PDF of regtests for ': '回帰テスト (PDF 版) バージョン ',
214         'abc2ly Regression tests for ': 'abc2ly 回帰テスト バージョン ',
215         'PDF of abc2ly regtests for ': 'abc2ly 回帰テスト (PDF 版) バージョン ',
216         'lilypond-book Regression tests for ': 'lilypond-book 回帰テスト バージョン ',
217         'PDF of lilypond-book regtests for ': 'lilypond-book 回帰テスト (PDF 版) バージョン ',
218         'MusicXML Regression tests for ': 'MusicXML 回帰テスト バージョン ',
219         'PDF of MusicXML regtests for ': 'MusicXML 回帰テスト (PDF 版) バージョン ',
220
221         'Doc tarball for ': 'ドキュメント アーカイブ バージョン ',
222         ' (did not exist in 2.12)': ' (バージョン 2.12 には存在しません)',
223
224         },
225     'nl': {
226         'Source': 'Broncode',
227
228         'Learning': 'Beginnen',
229         'Music glossary': 'Terminologie',
230         'Essay': 'Essay',
231         'Notation': 'Notatie',
232         'Usage': 'Gebruik',
233         'Snippets': 'Snippers',
234         'Web': 'Web',
235         'Changes': 'Veranderingen',
236         'Extending': 'Uitbreidingen',
237         'Internals': 'Internals',
238         'Contributor': 'Contributor',
239
240 # keep the spaces!
241         ' (split HTML)': ' (opgesplitste HTML)',
242         ' (big HTML)': ' (grote pagina HTML)',
243
244         'Regression tests for ': 'Regressietesten voor ',
245         'PDF of regtests for ': 'PDF van regressietesten voor ',
246         'abc2ly Regression tests for ': 'abc2ly regressietesten voor ',
247         'PDF of abc2ly regtests for ': 'abc2ly regressietesten voor ',
248         'lilypond-book Regression tests for ': 'lilypond-book regressietesten voor ',
249         'PDF of lilypond-book regtests for ': 'lilypond-book regressietesten voor ',
250         'MusicXML Regression tests for ': 'MusicXML regressietesten voor ',
251         'PDF of MusicXML regtests for ': 'MusicXML regressietesten voor ',
252
253         'Doc tarball for ': 'Tarball met documentation voor ',
254         ' (did not exist in 2.12)': ' (bestond nog niet in 2.12)',
255      },
256     'zh': {
257         'Source': '源码',
258         'Learning': '学习',
259         'Music glossary': '音乐术语表',
260         'Essay': '文章',
261         'Notation': '记谱法',
262         'Usage': '使用',
263         'Snippets': '片断',
264         'Web': 'Web',
265         'Changes': '变化',
266
267         'Extending': '扩展',
268         'Internals': '内部机制',
269         'Contributor': '贡献者',
270
271 # keep the spaces!
272         ' (split HTML)': ' (分开的 HTML)',
273         ' (big HTML)': ' (大的 HTML)',
274
275         'Regression tests for ': '回归测试 ',
276         'PDF of regtests for ': '回归测试的 PDF ',
277         'abc2ly Regression tests for ': 'abc2ly 回归测试 ',
278         'PDF of abc2ly regtests for ': 'abc2ly 的 PDF 回归测试 ',
279         'lilypond-book Regression tests for ': 'lilypond-book 回归测试 ',
280         'PDF of lilypond-book regtests for ': 'lilypond-book 的 PDF 回归测试 ',
281         'MusicXML Regression tests for ': 'MusicXML 回归测试 ',
282         'PDF of MusicXML regtests for ': 'MusicXML 的 PDF 回归测试 ',
283
284         'Doc tarball for ': '为文档压缩包',
285         ' (did not exist in 2.12)': ' (在 2.12 中不存在)',
286         },
287     }
288
289
290
291
292 ### actual program
293
294
295 VERSION_STABLE = ""
296 VERSION_DEVEL = ""
297
298 try:
299     topDir = sys.argv[1]
300 except:
301     myDir = os.path.dirname(sys.argv[0])
302     # use two abspaths to work around some windows python bug
303     topDir = os.path.join(os.path.abspath(myDir)+os.sep+'..'+os.sep+'..'+os.sep)
304     topDir = os.path.abspath( topDir )
305
306
307 # TODO: this might be useful for other scripts; can we make it available?
308 manuals = map(lambda x: os.path.splitext(x)[0],
309               map(os.path.basename,
310                   glob.glob(os.path.join(topDir,'Documentation', '*.te??'))))
311 #manuals = map(lambda x: 'glossary' if x=='music-glossary' else x, manuals)
312 manuals.append('internals')
313
314
315 version_file_path = os.path.join(topDir, "VERSION")
316
317 version_contents = open(version_file_path).readlines()
318 major = 0
319 minor = 0
320 patch = 0
321 for line in version_contents:
322     if (line.startswith('MAJOR_VERSION')):
323         major = line[14:-1]
324     if (line.startswith('MINOR_VERSION')):
325         minor = line[14:-1]
326     if (line.startswith('PATCH_LEVEL')):
327         patch = line[12:-1]
328     if (line.startswith('VERSION_STABLE')):
329         VERSION_STABLE = line[15:-1]
330     if (line.startswith('VERSION_DEVEL')):
331         VERSION_DEVEL = line[14:-1]
332
333 VERSION = str(major)+'.'+str(minor)+'.'+str(patch)
334
335 def _ (string, lang):
336     return translations.get (lang.split ('_')[0], {}).get (string, None)
337
338 getTrans = _
339 # let's not barf, but print a warning when something's missing
340 def getTrans(text, lang):
341     if not lang:
342         return text
343     trans = _ (text, lang)
344     if not trans:
345         trans = text
346         sys.stderr.write ('create-weblinks-itexi: warning: [%(lang)s]: translation missing for: %(text)s\n' % locals ())
347     return trans
348
349 def macroLang(name, lang):
350     if lang:
351         return name + '-' + lang
352     return name
353
354 def make_macro(name, string):
355     print "@macro", name
356     print string
357     print "@end macro"
358     print ""
359
360 def make_download(name, osA, osB, version, revision, text):
361     string = "@uref{http://download.linuxaudio.org/lilypond/binaries/"
362     string += osA + "lilypond-"
363     string += version + "-" + revision
364     string += "." + osB + ",\n"
365     string += text
366     string += ": LilyPond "
367     string += version + "-" + revision
368     string += "}"
369     make_macro(name, string)
370
371 def make_download_source(name, version, lang):
372     assert "." in version
373     vstring = "v%s.%s" % tuple(version.split(".", 2)[0:2])
374     string = "@uref{http://download.linuxaudio.org/lilypond/sources/"
375     string += vstring + "/"
376     string += "lilypond-" + version + ".tar.gz"
377     string += ", "
378     string += getTrans("Source", lang)
379     string += ": lilypond-" + version + ".tar.gz"
380     string += "}"
381     make_macro(macroLang(name,lang), string)
382
383 def make_all_downloads(macroName, version):
384     make_download("download"+macroName+"LinuxNormal", "linux-x86/",
385         "linux-x86.sh",    version, "1", "GNU/Linux x86")
386     make_download("download"+macroName+"LinuxBig", "linux-64/",
387         "linux-64.sh", version, "1", "GNU/Linux 64")
388     make_download("download"+macroName+"LinuxPPC", "linux-ppc/",
389         "linux-ppc.sh", version, "1", "GNU/Linux PPC")
390
391     make_download("download"+macroName+"FreeBSDNormal", "freebsd-x86/",
392         "freebsd-x86.sh", version, "1", "FreeBSD i386")
393     make_download("download"+macroName+"FreeBSDBig", "freebsd-64/",
394         "freebsd-64.sh", version, "1", "FreeBSD amd64")
395
396     make_download("download"+macroName+"DarwinNormal", "darwin-x86/",
397         "darwin-x86.tar.bz2", version, "1", "MacOS X x86")
398     make_download("download"+macroName+"DarwinPPC", "darwin-ppc/",
399         "darwin-ppc.tar.bz2", version, "1", "MacOS X PPC")
400
401     make_download("download"+macroName+"Windows", "mingw/",
402         "mingw.exe", version, "1", "Windows")
403
404 def make_ver_link(macroname, url, linktext):
405     string = "@uref{"
406     string += url
407     string += ","
408     string += linktext
409     string += "}"
410     make_macro(macroname, string)
411
412 # TODO: this kind of thing should really be in a central place for
413 # lilypond python build scripts
414 def translateNameToUrl(manual, version):
415     ver_split = version.split('.')
416     ver_minor = ver_split[0] + '.' + ver_split[1]
417     url = depth + "doc/v" + ver_minor + "/Documentation/"
418
419     if (ver_minor == '2.12'):
420         if (manual=='learning'):
421             return url+'user/lilypond-learning'
422         elif (manual=='internals'):
423             return url+'user/lilypond-internals'
424         elif (manual=='notation'):
425             return url+'user/lilypond'
426         elif (manual=='usage'):
427             return url+'user/lilypond-program'
428         elif (manual=='snippets'):
429             return url+'../input/lsr/lilypond-snippets'
430         elif (manual=='changes'):
431             return url+'topdocs/NEWS.html'
432         elif (manual=='music-glossary'):
433             return url+'user/music-glossary'
434         elif (manual=='essay'):
435             return url+'user/lilypond-learning/Background.html'
436         elif (manual=='extending'):
437             return url+'user/lilypond/Interfaces-for-programmers.html'
438         else:
439             return ''
440     else:
441         return url+manual
442
443 def addLang(url, lang):
444     if lang:
445         base, ext = os.path.splitext(url)
446         return base + '.' + lang + ext
447     else:
448         return url
449
450 def make_manual_links(name, version, lang):
451     """Here is where all the macros manualStableLearningSplit,
452     manualStableLearningBig, manualStableLearningSplitNoName, etc. are
453     created on the fly.  Hopefully this documentation string will help
454     others a bit while grepping for those.
455     """
456     for m in manuals:
457         manual = m
458         # TODO: this is a stupid way of doing it
459         if (m=='music-glossary'):
460             mshort = 'Glossary'
461         else:
462             mshort = m.capitalize()
463         if (manual=='music-glossary'):
464             manual = 'Music glossary'
465         url = translateNameToUrl(m, version)
466
467         if (url == ''):
468             # can't have a comma here due to texinfo
469             make_ver_link(macroLang("manual"+name+mshort+'Pdf',lang),
470                 "http://lilypond.org",
471                 mshort+getTrans(" (did not exist in 2.12)",lang))
472             make_ver_link(macroLang("manual"+name+mshort+'Split',lang),
473                 "http://lilypond.org",
474                 mshort+getTrans(" (did not exist in 2.12)",lang))
475             make_ver_link(macroLang("manual"+name+mshort+'Big',lang),
476                 "http://lilypond.org",
477                 mshort+getTrans(" (did not exist in 2.12)",lang))
478             make_ver_link(macroLang("manual"+name+mshort+'SplitNoName',lang),
479                 "http://lilypond.org",
480                 mshort+getTrans(" (did not exist in 2.12)",lang))
481             continue
482         # this is stupid and I shouldn't have bothered trying
483         # to support the 2.12 docs and it will be deleted once
484         # 2.14 is out and the website won't be visible to users
485         # until 2.14 is out.  -gp
486         if (url.endswith('.html')):
487             make_ver_link(macroLang("manual"+name+mshort+'Pdf',lang),
488                       addLang(url, lang),
489                       getTrans(manual.capitalize(),lang) + '.pdf')
490             make_ver_link(macroLang("manual"+name+mshort+'Split',lang),
491                       addLang(url, lang),
492                       getTrans(manual.capitalize(),lang) +
493                       getTrans(' (split HTML)',lang))
494             make_ver_link(macroLang("manual"+name+mshort+'Big',lang),
495                       addLang(url, lang),
496                       getTrans(manual.capitalize(),lang) +
497                       getTrans(' (big HTML)',lang))
498             newurl = url
499         else:
500             make_ver_link(macroLang("manual"+name+mshort+'Pdf',lang),
501                       # TODO: this is an even stupider way of doing it
502                       addLang(url+'.pdf', lang),
503                       getTrans(manual.capitalize(),lang) + '.pdf')
504             make_ver_link(macroLang("manual"+name+mshort+'Split',lang),
505                       addLang(url + '/index.html', lang),
506                       getTrans(manual.capitalize(),lang) +
507                       getTrans(' (split HTML)',lang))
508             make_ver_link(macroLang("manual"+name+mshort+'Big',lang),
509                       addLang(url + '-big-page.html', lang),
510                       getTrans(manual.capitalize(),lang) +
511                       getTrans(' (big HTML)',lang))
512             newurl = url + '/index.html'
513         make_ver_link(macroLang("manual"+name+mshort+'SplitNoName',lang),
514                   addLang(newurl, lang),
515                   getTrans(manual.capitalize(),lang))
516
517 def make_regtest_links(name, version, lang):
518     ver_split = version.split('.')
519     ver_minor = ver_split[0] + '.' + ver_split[1]
520     url = depth + "doc/v" + ver_minor + "/input/regression/"
521
522     make_ver_link(macroLang("regtest"+name, lang),
523         url+"collated-files.html",
524         getTrans("Regression tests for ", lang)+version)
525     make_ver_link(macroLang("regtest"+name+"Pdf", lang),
526         url+"collated-files.pdf",
527         getTrans("PDF of regtests for ", lang)+version)
528     make_ver_link(macroLang("regtest"+name+"Xml", lang),
529         url+"musicxml/collated-files.html",
530         getTrans("MusicXML Regression tests for ", lang)+version)
531     make_ver_link(macroLang("regtest"+name+"Abc", lang),
532         url+"abc2ly/collated-files.html",
533         getTrans("abc2ly Regression tests for ", lang)+version)
534     make_ver_link(macroLang("regtest"+name+"LilypondBook", lang),
535         url+"lilypond-book/collated-files.html",
536         getTrans("lilypond-book Regression tests for ", lang)+version)
537     make_ver_link(macroLang("regtest"+name+"XmlPdf", lang),
538          url+"musicxml/collated-files.pdf",
539         getTrans("PDF of MusicXML regtests for ", lang)+version)
540     make_ver_link(macroLang("regtest"+name+"AbcPdf", lang),
541          url+"abc2ly/collated-files.pdf",
542         getTrans("PDF of abc2ly regtests for ", lang)+version)
543     make_ver_link(macroLang("regtest"+name+"LilypondBookPdf", lang),
544          url+"lilypond-book/collated-files.pdf",
545         getTrans("PDF of lilypond-book regtests for ", lang)+version)
546
547 def make_doctarball_links(name, version, lang):
548     url = depth + "download/binaries/documentation/lilypond-"
549     # ugly FIXME, but proper build number support isn't Critical.
550     url += version + "-1"
551     url += ".documentation.tar.bz2"
552     make_ver_link(macroLang("doctarball"+name, lang),
553         url, getTrans("Doc tarball for ", lang)+version)
554
555 print "@c This file was autogenerated"
556 print "@c     from: VERSION"
557 print "@c     by:   %s" % sys.argv[0]
558 print ""
559 print "@c ************************ Download binaries ************"
560 print ""
561
562 make_all_downloads("Stable", VERSION_STABLE)
563 make_all_downloads("Devel", VERSION_DEVEL)
564
565 print "@c ************************ Download source ************"
566 print ""
567
568 for lang in langs:
569     print "@c *********", lang or "en", "***"
570     make_download_source("downloadStableSource", VERSION_STABLE, lang)
571     make_download_source("downloadDevelSource", VERSION_DEVEL, lang)
572
573 print "@c ************************ Manual links ************"
574 print ""
575
576 for lang in langs:
577     print "@c *********", lang or "en", "***"
578     make_manual_links("Stable", VERSION_STABLE, lang)
579     make_manual_links("Devel", VERSION_DEVEL, lang)
580
581     make_doctarball_links("Stable", VERSION_STABLE, lang)
582     make_doctarball_links("Devel", VERSION_DEVEL, lang)
583
584 print "@c ************************ Regtest links ************"
585 print ""
586
587 for lang in langs:
588     print "@c *********", lang or "en", "***"
589     make_regtest_links("Stable", VERSION_STABLE, lang)
590     make_regtest_links("Devel", VERSION_DEVEL, lang)
591 print "@c ***************************************************"