openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #28026
[Merge] lp:~raoul-snyman/openlp/fix-translation-script into lp:openlp
Raoul Snyman has proposed merging lp:~raoul-snyman/openlp/fix-translation-script into lp:openlp.
Requested reviews:
OpenLP Core (openlp-core)
For more details, see:
https://code.launchpad.net/~raoul-snyman/openlp/fix-translation-script/+merge/281331
Update the translation script to use argparse instead of optparse.
Add this to your merge proposal:
--------------------------------
lp:~raoul-snyman/openlp/fix-translation-script (revision 2579)
[SUCCESS] https://ci.openlp.io/job/Branch-01-Pull/1200/
[SUCCESS] https://ci.openlp.io/job/Branch-02-Functional-Tests/1125/
[SUCCESS] https://ci.openlp.io/job/Branch-03-Interface-Tests/1064/
[FAILURE] https://ci.openlp.io/job/Branch-04a-Windows_Functional_Tests/910/
Stopping after failure
--
Your team OpenLP Core is requested to review the proposed merge of lp:~raoul-snyman/openlp/fix-translation-script into lp:openlp.
=== modified file 'scripts/translation_utils.py'
--- scripts/translation_utils.py 2015-11-07 00:49:40 +0000
+++ scripts/translation_utils.py 2015-12-23 22:08:30 +0000
@@ -45,21 +45,22 @@
@:~$ ./translation_utils.py -dpu
"""
+from argparse import ArgumentParser
+from getpass import getpass
+import base64
+import glob
+import json
import os
-import urllib.request
+import sys
import urllib.error
import urllib.parse
-from getpass import getpass
-import base64
-import json
+import urllib.request
import webbrowser
-import glob
+from PyQt5 import QtCore
from lxml import etree, objectify
-from optparse import OptionParser
-from PyQt5 import QtCore
-SERVER_URL = 'http://www.transifex.net/api/2/project/openlp/resource/openlp-22x/'
+SERVER_URL = 'http://www.transifex.net/api/2/project/openlp/resource/openlp-24x/'
IGNORED_PATHS = ['scripts']
IGNORED_FILES = ['setup.py']
@@ -300,6 +301,7 @@
This method runs through the ts-files and looks for mismatches between format strings in the original text
and in the translations.
"""
+ is_ok = True
path = os.path.join(os.path.abspath('..'), 'resources', 'i18n', '*.ts')
file_list = glob.glob(path)
for filename in file_list:
@@ -317,14 +319,17 @@
print_verbose('parsed numerusform: location: %s, source: %s, translation: %s' % (
location, org_text, num.text))
if num and org_text.count('%') != num.text.count('%'):
+ is_ok = False
print_quiet(
'ERROR: Translation from %s at line %s has a mismatch of format input:\n%s\n%s\n' % (
location, line, org_text, num.text))
else:
print_verbose('parsed: location: %s, source: %s, translation: %s' % (location, org_text, translation))
if org_text.count('%') != translation.count('%'):
+ is_ok = False
print_quiet('ERROR: Translation from %s at line %s has a mismatch of format input:\n%s\n%s\n' % (
location, line, org_text, translation))
+ return is_ok
def process_stack(command_stack):
@@ -335,6 +340,7 @@
``command_stack``
The command stack to process.
"""
+ is_success = True
if command_stack:
print_quiet('Processing %d commands...' % len(command_stack))
for command in command_stack:
@@ -351,70 +357,74 @@
elif command == Command.Create:
create_translation()
elif command == Command.Check:
- check_format_strings()
+ is_success = check_format_strings()
print_quiet('Finished processing commands.')
else:
print_quiet('No commands to process.')
+ return is_success
def main():
global verbose_mode, quiet_mode, username, password
# Set up command line options.
- usage = '%prog [options]\nOptions are parsed in the order they are ' + \
+ usage = '%(prog)s [options]\nOptions are parsed in the order they are ' + \
'listed below. If no options are given, "-dpug" will be used.\n\n' + \
'This script is used to manage OpenLP\'s translation files.'
- parser = OptionParser(usage=usage)
- parser.add_option('-U', '--username', dest='username', metavar='USERNAME',
- help='Transifex username, used for authentication')
- parser.add_option('-P', '--password', dest='password', metavar='PASSWORD',
- help='Transifex password, used for authentication')
- parser.add_option('-d', '--download-ts', dest='download',
- action='store_true', help='download language files from Transifex')
- parser.add_option('-c', '--create', dest='create', action='store_true',
- help='go to Transifex to request a new translation file')
- parser.add_option('-p', '--prepare', dest='prepare', action='store_true',
- help='generate a project file, used to update the translations')
- parser.add_option('-u', '--update', action='store_true', dest='update',
- help='update translation files (needs a project file)')
- parser.add_option('-g', '--generate', dest='generate', action='store_true',
- help='compile .ts files into .qm files')
- parser.add_option('-v', '--verbose', dest='verbose', action='store_true',
- help='show extra information while processing translations')
- parser.add_option('-q', '--quiet', dest='quiet', action='store_true',
- help='suppress all output other than errors')
- parser.add_option('-f', '--check-format-strings', dest='check', action='store_true',
- help='check that format strings are matching in translations')
- (options, args) = parser.parse_args()
+ parser = ArgumentParser(usage=usage)
+ parser.add_argument('-U', '--username', dest='username', metavar='USERNAME',
+ help='Transifex username, used for authentication')
+ parser.add_argument('-P', '--password', dest='password', metavar='PASSWORD',
+ help='Transifex password, used for authentication')
+ parser.add_argument('-d', '--download-ts', dest='download',
+ action='store_true', help='download language files from Transifex')
+ parser.add_argument('-c', '--create', dest='create', action='store_true',
+ help='go to Transifex to request a new translation file')
+ parser.add_argument('-p', '--prepare', dest='prepare', action='store_true',
+ help='generate a project file, used to update the translations')
+ parser.add_argument('-u', '--update', action='store_true', dest='update',
+ help='update translation files (needs a project file)')
+ parser.add_argument('-g', '--generate', dest='generate', action='store_true',
+ help='compile .ts files into .qm files')
+ parser.add_argument('-v', '--verbose', dest='verbose', action='store_true',
+ help='show extra information while processing translations')
+ parser.add_argument('-q', '--quiet', dest='quiet', action='store_true',
+ help='suppress all output other than errors')
+ parser.add_argument('-f', '--check-format-strings', dest='check', action='store_true',
+ help='check that format strings are matching in translations')
+ args = parser.parse_args()
# Create and populate the command stack
command_stack = CommandStack()
- if options.download:
+ if args.download:
command_stack.append(Command.Download)
- if options.create:
- command_stack.append(Command.Create, arguments=[options.create])
- if options.prepare:
+ if args.create:
+ command_stack.append(Command.Create, arguments=[args.create])
+ if args.prepare:
command_stack.append(Command.Prepare)
- if options.update:
+ if args.update:
command_stack.append(Command.Update)
- if options.generate:
+ if args.generate:
command_stack.append(Command.Generate)
- if options.check:
+ if args.check:
command_stack.append(Command.Check)
- verbose_mode = options.verbose
- quiet_mode = options.quiet
- if options.username:
- username = options.username
- if options.password:
- password = options.password
+ verbose_mode = args.verbose
+ quiet_mode = args.quiet
+ if args.username:
+ username = args.username
+ if args.password:
+ password = args.password
if not command_stack:
command_stack.append(Command.Download)
command_stack.append(Command.Prepare)
command_stack.append(Command.Update)
command_stack.append(Command.Generate)
# Process the commands
- process_stack(command_stack)
+ return process_stack(command_stack)
+
if __name__ == '__main__':
if os.path.split(os.path.abspath('.'))[1] != 'scripts':
print('You need to run this script from the scripts directory.')
else:
- main()
+ if not main():
+ sys.exit(1)
+
References