]> git.donarmstrong.com Git - lilypond.git/blob - python/langdefs.py
Merge branch 'master' of ssh+git://git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / python / langdefs.py
1 #!@PYTHON@
2 #-*- coding: utf-8 -*-
3
4 """
5 Documentation i18n module
6 """
7
8 import re
9 import sys
10
11 def lang_file_name (p, langext, ext):
12     if langext != '':
13         return p + '.' + langext + ext
14     return p + ext
15
16 class LanguageDef:
17     def __init__ (self, code, name, webext=None, double_punct_char_sep='', html_filter=lambda s: s):
18         self.code = code
19         self.name = name
20         self.enabled = True
21         if webext == None:
22             self.webext = self.code
23         else:
24             self.webext = webext
25         self.double_punct_char_sep = double_punct_char_sep
26         self.html_filter = html_filter
27     
28     def file_name (self, prefix, ext):
29         return lang_file_name (prefix, self.webext, ext)
30
31
32 # All language information needed for documentation i18n is defined
33 # here. For each 'Documentation/ab' directory containing docs
34 # translated in 'ab', there should be one entry in LANGUAGES.
35
36 site = LanguageDef ('en', 'English', webext='')
37
38 html_page_body = re.compile ('</?body>', re.M | re.I)
39 french_html_typo_rules = ((' :', '&nbsp;:'),
40                           (' ;', '&nbsp;;'),
41                           (' ?', '&thinsp;?'),
42                           (' !', '&thinsp;!'))
43
44 def french_html_filter (page):
45     parts = html_page_body.split (page)
46     for r in french_html_typo_rules:
47         parts[1] = parts[1].replace (r[0], r[1])
48     return parts[0] + '<body>' + parts[1] + '</body>' + parts[2]
49
50 fr = LanguageDef ('fr', 'français', double_punct_char_sep='&nbsp;', html_filter = french_html_filter)
51 es = LanguageDef ('es', 'español')
52 de = LanguageDef ('de', 'deutsch')
53
54 # Outdated or broken translations may be disabled
55 # (please run 'make web-clean' before doing that):
56 #fr.enabled = False
57
58 LANGUAGES = (site, fr, es, de)
59
60 if __name__ == '__main__':
61     print ' '.join ([l.code for l in LANGUAGES if l.enabled and l.code != 'en'])
62 else:
63     LANGDICT = {}
64     for l in LANGUAGES:
65         LANGDICT[l.code] = l
66
67     try:
68         import gettext
69         import os
70
71         translation = {}
72         for l in LANGUAGES:
73             if l.enabled and l.code != 'en':
74                 t = gettext.translation('lilypond-doc',
75                                         os.environ['LYDOC_LOCALEDIR'],
76                                         [l.code])
77                 translation[l.code] = t.gettext
78     except:
79         sys.stderr.write ('langdefs.py: warning: lilypond-doc gettext domain not found.\n')
80         translation = dict ([(l.code, lambda x: x) for l in LANGUAGES])