]> git.donarmstrong.com Git - lilypond.git/blobdiff - scripts/auxiliar/tely-gettext.py
Add '-dcrop' option to ps and svg backends
[lilypond.git] / scripts / auxiliar / tely-gettext.py
index 97ed5dcd887a627d50936934072895d5bc9f96ed..3adc4cb6d3b692b09d8b953af22e4c52c633fb8e 100755 (executable)
@@ -22,8 +22,9 @@ _doc = langdefs.translation[lang]
 
 include_re = re.compile (r'@include (.*?)$', re.M)
 whitespaces = re.compile (r'\s+')
-ref_re = re.compile (r'(?ms)@(ruser|rprogram|ref|rlearning)\{(.*?)\}')
+ref_re = re.compile (r'(?ms)@((?:ressay|rgloss|rinternals|rlearning|rslr|rprogram|ruser|ref)|named)\{(.*?)\}')
 node_section_re = re.compile (r'@node (.*?)\n@((?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) (.*?)\n')
+section_only_re = re.compile (r'@((?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) (.*?)\n')
 menu_entry_re = re.compile (r'\* (.*?)::')
 untranslated_node_re = re.compile (r'(@node\s+.*\n@.*\n.*)(\s+@untranslated(.|\n)+?)(?=@node|@subheading|@menu|$)')
 
@@ -37,16 +38,21 @@ def node_gettext (m):
         m.group (2) + ' ' + _doc (m.group (3)) + \
        '\n@translationof ' + m.group (1) + '\n'
 
+def section_gettext (m):
+    return '@' + m.group (1) + ' ' + _doc (m.group (2)) + '\n'
+
 def menu_entry_gettext (m):
     return '* ' + _doc (m.group (1)) + '::'
 
-def process_file (filename):
+def process_file (filename, master_file_dir='.', included=False):
     print "Processing %s" % filename
     f = open (filename, 'r')
     page = f.read ()
     f.close()
-    page = node_section_re.sub (node_gettext, page)
     page = ref_re.sub (ref_gettext, page)
+    if not '\\n@translationof' in page:
+        page = node_section_re.sub (node_gettext, page)
+    page = section_only_re.sub (section_gettext, page)
     page = menu_entry_re.sub (menu_entry_gettext, page)
     page = page.replace ("""@c -- SKELETON FILE --
 """, '')
@@ -57,10 +63,16 @@ def process_file (filename):
     f.write (page)
     f.close ()
     dir = os.path.dirname (filename)
+    if not included:
+        master_file_dir = dir
     for file in includes:
         p = os.path.join (dir, file)
         if os.path.exists (p):
-            process_file (p)
+            process_file (p, master_file_dir, included=True)
+        else:
+            p = os.path.join (master_file_dir, file)
+            if os.path.exists (p):
+                process_file (p, master_file_dir, included=True)
 
 for filename in files:
     process_file (filename)