From 4c14e3181ca416f19c83c4b3489377bcdd55460f Mon Sep 17 00:00:00 2001 From: John Mandereau Date: Sat, 22 Nov 2008 20:04:38 +0100 Subject: [PATCH] Docs: hack HTML gettextization again Section titles which contain @-commands are still not translated in , because there is no way to guess them easily in HTML output; this will remain broken until we drop 'makeinfo --html' support and translate node names only in the source. --- buildscripts/html-gettext.py | 70 +++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/buildscripts/html-gettext.py b/buildscripts/html-gettext.py index aaa8888a3f..6920e50d22 100644 --- a/buildscripts/html-gettext.py +++ b/buildscripts/html-gettext.py @@ -29,37 +29,42 @@ my_gettext = langdefs.translation[lang] html_codes = ((' -- ', ' – '), (' --- ', ' — '), ("'", '’')) -html2texi = {'command': - (re.compile (r'<samp><span class="command">(.*?)</span></samp>'), - r'@command{\1}'), - 'code': - (re.compile (r'<code>(.*?)</code>'), - r'@code{\1}') - } -texi2html = {'command': - (re.compile (r'@command{(.*?)}'), - r'<samp><span class="command">\1</span></samp>'), - 'code': - (re.compile (r'@code{(.*?)}'), - r'<code>\1</code>') - } +texi_html_conversion = { + 'command': { + 'html2texi': + (re.compile (r'(?:<samp><span class="command">|<code>)(.*?)(?:</span></samp>|</code>)'), + r'@command{\1}'), + 'texi2html': + (re.compile (r'@command{(.*?)}'), + r'<code>\1</code>'), + }, + 'code': { + 'html2texi': + (re.compile (r'<code>(.*?)</code>'), + r'@code{\1}'), + 'texi2html': + (re.compile (r'@code{(.*?)}'), + r'<code>\1</code>'), + }, + } + whitespaces = re.compile (r'\s+') def _ (s): if not s: return '' - s = whitespaces.sub (' ', s) + str = whitespaces.sub (' ', s) for c in html_codes: - s = s.replace (c[1], c[0]) - for u in html2texi.values(): - s = u[0].sub (u[1], s) - s = my_gettext (s) - for u in texi2html.values(): - s = u[0].sub (u[1], s) + str = str.replace (c[1], c[0]) + for command in texi_html_conversion: + d = texi_html_conversion[command] + str = d['html2texi'][0].sub (d['html2texi'][1], str) + str = my_gettext (str) + str = d['texi2html'][0].sub (d['texi2html'][1], str) for c in html_codes: - s = s.replace (c[0], c[1]) - return s + str = str.replace (c[0], c[1]) + return str link_re = re.compile (r'<link rel="(up|prev|next)" (.*?) title="([^"]*?)">') @@ -72,27 +77,28 @@ makeinfo_title_re = re.compile (r'<title>([^<]*?) - ([^<]*?)') def makeinfo_title_gettext (m): return '' + _ (m.group (1)) + ' - ' + m.group (2) + '' -texi2html_title_re = re.compile (r'(.+?): ([A-Z\d.]+ |)(.+?)') +texi2html_title_re = re.compile (r'(.+): ([A-Z\d.]+ |)(.+?)') def texi2html_title_gettext (m): return '' + _ (m.group (1)) + double_punct_char_separator + ': ' \ + m.group (2) + _ (m.group (3)) + '' -a_href_re = re.compile ('(?s)]*?href="[\\w.#-_]+"[^>]*>(?:|))\ -(Appendix |)([A-Z0-9.]+ | (?:<){1,2} | [^:<]+?: | |)\ -(.+?)(| (?:>){1,2} | |):?') +a_href_re = re.compile ('(?s)[^>]*?href="[\\w.#-_]+"[^>]*>)(?P)?\ +(?PAppendix )?(?P[A-Z0-9.]+ | (?:<){1,2} | [^:]+?: | |)\ +(?P.+?)(?P(?(code)|))(?P| (?:>){1,2} | |):?') def a_href_gettext (m): s = '' if m.group(0)[-1] == ':': s = double_punct_char_separator + ':' t = '' - if m.group (2): - t = _ (m.group (2)) - return '' + s + if m.group ('appendix'): + t = _ (m.group ('appendix')) + return '' + s -h_re = re.compile (r'\s*(Appendix |)([A-Z\d.]+ |)?([^<]+)\s*') +h_re = re.compile (r'\s*(Appendix |)([A-Z\d.]+ |)(.+?)\s*') def h_gettext (m): if m.group (3): -- 2.39.5