4 # USAGE: html-gettext.py [-o OUTDIR] BUILDSCRIPT-DIR LOCALEDIR LANG FILES
6 # -o OUTDIR specifies that output files should be written in OUTDIR
7 # rather than be overwritten
16 optlist, args = getopt.getopt(sys.argv[1:],'o:')
17 buildscript_dir, localedir, lang = args[0:3]
24 sys.path.append (buildscript_dir)
27 double_punct_char_separator = langdefs.LANGDICT[lang].double_punct_char_sep
30 t = gettext.translation('lilypond-doc', localedir, [lang])
31 my_gettext = t.gettext
33 html_codes = ((' -- ', ' – '),
34 (' --- ', ' — '))
38 s = s.replace (c[1], c[0])
41 s = s.replace (c[0], c[1])
45 return '<link rel="' + m.group(1) + '" ' + m.group(2) + ' title="' + _(m.group(3)) + '">'
47 def title_gettext (m):
48 return '<title>' + _(m.group(1)) + ' - ' + m.group(2) + '</title>'
50 def a_href_gettext (m):
52 s = double_punct_char_separator + ':'
53 elif m.group(6) == None:
55 return '<a ' + (m.group(1) or '') + m.group(2) + m.group(3) + _(m.group(4)) + m.group(5) + '</a>' + s
58 return '<h' + m.group(1) + m.group(2) + '>' + \
59 m.group(3) + _(m.group(4)) + '</h' + m.group(1) + '>'
61 def rglos_gettext (m):
62 return '<a href="../music-glossary/' + m.group(1) + '">' + _(m.group(2)) + '</a>'
64 for filename in args[3:]:
65 f = open (filename, 'r')
68 page = re.sub (r'<link rel="(up|prev|next)" (.*?) title="([^"]*?)">', link_gettext, page)
69 page = re.sub (r'<title>([^<]*?) - ([^<]*?)</title>', title_gettext, page)
70 page = re.sub (r'<a ((?:rel="\w+")? ?(?:accesskey="[^"]+?" ?)?)(href="[^"]+?">)((?:<code>|)(?:[\d.]+ |))([^<]+)(</code>|)</a>(:)?', a_href_gettext, page)
71 page = re.sub (r'<h(\d)( class="\w+"|)>([\d.]+ |)?([^<]+)</h\1>', h_gettext, page)
72 page = re.sub (r'<a href="../music-glossary/(.+?)">(.+?)</a>', rglos_gettext, page)
73 for w in ('Next:', 'Previous:', 'Up:'):
74 page = re.sub (w, _(w), page)
75 f = open (os.path.join (outdir, filename), 'w')