X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=buildscripts%2Fcheck_translation.py;h=090b1fbe8a73811af2dd98c0d2c74f2078ca6aa3;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=55a384ee99b9c120f8e9884d9e76a6117eb48e5c;hpb=7d6fb6d3550420133ccdbbdb502b620f570359af;p=lilypond.git diff --git a/buildscripts/check_translation.py b/buildscripts/check_translation.py index 55a384ee99..090b1fbe8a 100644 --- a/buildscripts/check_translation.py +++ b/buildscripts/check_translation.py @@ -1,13 +1,15 @@ -#!@PYTHON@ +#!/usr/bin/env python import __main__ import optparse -import gettext import os -import re import sys +import langdefs +import buildlib + verbose = 0 +use_colors = False lang = 'C' C = lang @@ -16,27 +18,7 @@ def dir_lang (file, lang, lang_dir_index): path_components[lang_dir_index] = lang return os.path.join (*path_components) -## Translation of GIT Commit: -REVISION_RE = re.compile ('GIT [Cc]ommittish: ([a-f0-9]+)') -CVS_DIFF = 'git diff %(revision)s HEAD -- %(original)s | cat' - -def check_file (original, translated): - s = open (translated).read () - m = REVISION_RE.search (s) - if not m: - sys.stderr.write ('error: ' + translated + \ - ": no 'GIT committish: ' found.\nPlease check " + \ - 'the whole file against the original in English, then ' + \ - 'fill in HEAD committish in the header.\n') - sys.exit (1) - revision = m.group (1) - - c = CVS_DIFF % vars () - if verbose: - sys.stderr.write ('running: ' + c) - os.system (c) - -def do_file (file_name, lang_codes): +def do_file (file_name, lang_codes, buildlib): if verbose: sys.stderr.write ('%s...\n' % file_name) split_file_name = file_name.split ('/') @@ -53,19 +35,39 @@ def do_file (file_name, lang_codes): raise Exception ('cannot determine language for ' + file_name) original = dir_lang (file_name, '', lang_dir_index) - translated = file_name - check_file (original, translated) + translated_contents = open (file_name).read () + (diff_string, error) \ + = buildlib.check_translated_doc (original, + file_name, + translated_contents, + color=use_colors and not update_mode) + + if error: + sys.stderr.write ('warning: %s: %s' % (file_name, error)) + + if update_mode: + if error or len (diff_string) >= os.path.getsize (original): + buildlib.read_pipe (text_editor + ' ' + file_name + ' ' + original) + elif diff_string: + diff_file = original + '.diff' + f = open (diff_file, 'w') + f.write (diff_string) + f.close () + buildlib.read_pipe (text_editor + ' ' + file_name + ' ' + diff_file) + os.remove (diff_file) + else: + sys.stdout.write (diff_string) def usage (): sys.stdout.write (r''' Usage: -check-translation [--language=LANG] [--verbose] BUILDSCRIPT-DIR FILE... +check-translation [--language=LANG] [--verbose] [--update] FILE... This script is licensed under the GNU GPL. ''') def do_options (): - global lang, verbose + global lang, verbose, update_mode, use_colors p = optparse.OptionParser (usage="check-translation [--language=LANG] [--verbose] FILE...", description="This script is licensed under the GNU GPL.") @@ -73,26 +75,43 @@ def do_options (): action='store', default='site', dest="language") + p.add_option ("--no-color", + action='store_false', + default=True, + dest="color", + help="do not print ANSI-cooured output") p.add_option ("--verbose", action='store_true', default=False, dest="verbose", - help="the GIT directory to merge.") + help="print details, including executed shell commands") + p.add_option ('-u', "--update", + action='store_true', + default=False, + dest='update_mode', + help='call $EDITOR to update the translation') (options, files) = p.parse_args () verbose = options.verbose lang = options.language + use_colors = options.color + update_mode = options.update_mode - return (files[0], files[1:]) + return files def main (): - import_path, files = do_options () + global update_mode, text_editor + + files = do_options () + if 'EDITOR' in os.environ: + text_editor = os.environ['EDITOR'] + else: + update_mode = False - sys.path.append (import_path) - import langdefs + buildlib.verbose = verbose for i in files: - do_file (i, langdefs.LANGDICT.keys()) + do_file (i, langdefs.LANGDICT.keys (), buildlib) if __name__ == '__main__': main ()