From a4c4a16ed9a600b09ff7b62d78eaceb377cf3a9c Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 27 Sep 2017 17:35:51 +0200 Subject: [PATCH 1/7] handle exceptions that send a tuple for the error message Running `fdroid verify` I was seeing FDroidExceptions from verify.py:98 that had a tuple rather than a string. Traceback (most recent call last): File "/home/hans/code/fdroid/server/fdroid", line 152, in main() File "/home/hans/code/fdroid/server/fdroid", line 128, in main mod.main() File "/home/hans/code/fdroid/server/fdroidserver/verify.py", line 98, in main logging.info("...NOT verified - {0}".format(e)) File "/home/hans/code/fdroid/server/fdroidserver/exception.py", line 22, in __str__ ret += "\n==== detail begin ====\n%s\n==== detail end ====" % ''.join(self.detail).strip() TypeError: sequence item 1: expected str instance, HTTPError found --- fdroidserver/exception.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fdroidserver/exception.py b/fdroidserver/exception.py index 61fa68bd..4a3570d2 100644 --- a/fdroidserver/exception.py +++ b/fdroidserver/exception.py @@ -19,7 +19,7 @@ class FDroidException(Exception): def __str__(self): ret = self.value if self.detail: - ret += "\n==== detail begin ====\n%s\n==== detail end ====" % self.detail.strip() + ret += "\n==== detail begin ====\n%s\n==== detail end ====" % ''.join(self.detail).strip() return ret From 0c4dc9779e2167546a7ddf974e3ceecf881b21a3 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 29 Sep 2017 17:49:48 +0200 Subject: [PATCH 2/7] server: move strings to be gettext translatable --- fdroidserver/server.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/fdroidserver/server.py b/fdroidserver/server.py index aa15284f..39165654 100644 --- a/fdroidserver/server.py +++ b/fdroidserver/server.py @@ -69,7 +69,8 @@ def update_awsbucket_s3cmd(repo_section): to use a full MD5 checksum of all files to detect changes. ''' - logging.debug('using s3cmd to sync with ' + config['awsbucket']) + logging.debug(_('Using s3cmd to sync with: {url}') + .format(url=config['awsbucket'])) configfilename = '.s3cfg' fd = os.open(configfilename, os.O_CREAT | os.O_TRUNC | os.O_WRONLY, 0o600) @@ -129,7 +130,8 @@ def update_awsbucket_libcloud(repo_section): Requires AWS credentials set in config.py: awsaccesskeyid, awssecretkey ''' - logging.debug('using Apache libcloud to sync with ' + config['awsbucket']) + logging.debug(_('using Apache libcloud to sync with {url}') + .format(url=config['awsbucket'])) import libcloud.security libcloud.security.VERIFY_SSL_CERT = True @@ -138,7 +140,7 @@ def update_awsbucket_libcloud(repo_section): if not config.get('awsaccesskeyid') or not config.get('awssecretkey'): raise FDroidException( - 'To use awsbucket, you must set awssecretkey and awsaccesskeyid in config.py!') + _('To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.py!')) awsbucket = config['awsbucket'] cls = get_driver(Provider.S3) @@ -147,7 +149,8 @@ def update_awsbucket_libcloud(repo_section): container = driver.get_container(container_name=awsbucket) except ContainerDoesNotExistError: container = driver.create_container(container_name=awsbucket) - logging.info('Created new container "' + container.name + '"') + logging.info(_('Created new container "{name}"') + .format(name=container.name)) upload_dir = 'fdroid/' + repo_section objs = dict() @@ -403,7 +406,7 @@ def update_servergitmirrors(servergitmirrors, repo_section): repo.git.add(all=True) repo.index.commit("fdroidserver git-mirror: Deploy to GitLab Pages") - logging.debug('Pushing to ' + remote.url) + logging.debug(_('Pushing to {url}').format(url=remote.url)) with repo.git.custom_environment(GIT_SSH_COMMAND=ssh_cmd): pushinfos = remote.push('master', force=True, set_upstream=True, progress=progress) for pushinfo in pushinfos: @@ -540,7 +543,8 @@ def push_binary_transparency(git_repo_path, git_remote): ''' import git - logging.info('Pushing binary transparency log to ' + git_remote) + logging.info(_('Pushing binary transparency log to {url}') + .format(url=git_remote)) if os.path.isdir(os.path.dirname(git_remote)): # from offline machine to thumbdrive @@ -628,17 +632,17 @@ def main(): logging.error(_('local_copy_dir must be directory, not a file!')) sys.exit(1) if not os.path.exists(os.path.dirname(fdroiddir)): - logging.error('The root dir for local_copy_dir "' - + os.path.dirname(fdroiddir) - + '" does not exist!') + logging.error(_('The root dir for local_copy_dir "{path}" does not exist!') + .format(path=os.path.dirname(fdroiddir))) sys.exit(1) if not os.path.isabs(fdroiddir): logging.error(_('local_copy_dir must be an absolute path!')) sys.exit(1) repobase = os.path.basename(fdroiddir) if standardwebroot and repobase != 'fdroid': - logging.error('local_copy_dir does not end with "fdroid", ' - + 'perhaps you meant: ' + fdroiddir + '/fdroid') + logging.error(_('local_copy_dir does not end with "fdroid", ' + + 'perhaps you meant: "{path}"') + .format(path=fdroiddir + '/fdroid')) sys.exit(1) if local_copy_dir[-1] != '/': local_copy_dir += '/' From b6067e6a1ff0b436ad612a5ac1c4673db444a499 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 29 Sep 2017 17:50:23 +0200 Subject: [PATCH 3/7] server: automatically create S3 bucket when using s3cmd --- fdroidserver/server.py | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/fdroidserver/server.py b/fdroidserver/server.py index 39165654..013f155f 100644 --- a/fdroidserver/server.py +++ b/fdroidserver/server.py @@ -79,22 +79,29 @@ def update_awsbucket_s3cmd(repo_section): os.write(fd, ('secret_key = ' + config['awssecretkey'] + '\n').encode('utf-8')) os.close(fd) - s3url = 's3://' + config['awsbucket'] + '/fdroid/' - s3cmdargs = [ - 's3cmd', - 'sync', - '--config=' + configfilename, - '--acl-public', - ] + s3bucketurl = 's3://' + config['awsbucket'] + s3cmd = [config['s3cmd'], '--config=' + configfilename] + if subprocess.call(s3cmd + ['info', s3bucketurl]) != 0: + logging.warning(_('Creating new S3 bucket: {url}') + .format(url=s3bucketurl)) + if subprocess.call(s3cmd + ['mb', s3bucketurl]) != 0: + logging.error(_('Failed to create S3 bucket: {url}') + .format(url=s3bucketurl)) + raise FDroidException() + + s3cmd_sync = s3cmd + ['sync', '--acl-public'] if options.verbose: - s3cmdargs += ['--verbose'] + s3cmd_sync += ['--verbose'] if options.quiet: - s3cmdargs += ['--quiet'] + s3cmd_sync += ['--quiet'] indexxml = os.path.join(repo_section, 'index.xml') indexjar = os.path.join(repo_section, 'index.jar') indexv1jar = os.path.join(repo_section, 'index-v1.jar') + + s3url = s3bucketurl + '/fdroid/' logging.debug('s3cmd sync new files in ' + repo_section + ' to ' + s3url) - if subprocess.call(s3cmdargs + + logging.debug(_('Running first pass with MD5 checking disabled')) + if subprocess.call(s3cmd_sync + ['--no-check-md5', '--skip-existing', '--exclude', indexxml, '--exclude', indexjar, @@ -102,7 +109,7 @@ def update_awsbucket_s3cmd(repo_section): repo_section, s3url]) != 0: raise FDroidException() logging.debug('s3cmd sync all files in ' + repo_section + ' to ' + s3url) - if subprocess.call(s3cmdargs + + if subprocess.call(s3cmd_sync + ['--no-check-md5', '--exclude', indexxml, '--exclude', indexjar, @@ -110,14 +117,15 @@ def update_awsbucket_s3cmd(repo_section): repo_section, s3url]) != 0: raise FDroidException() - logging.debug('s3cmd sync indexes ' + repo_section + ' to ' + s3url + ' and delete') - s3cmdargs.append('--delete-removed') - s3cmdargs.append('--delete-after') + logging.debug(_('s3cmd sync indexes {path} to {url} and delete') + .format(path=repo_section, url=s3url)) + s3cmd_sync.append('--delete-removed') + s3cmd_sync.append('--delete-after') if options.no_checksum: - s3cmdargs.append('--no-check-md5') + s3cmd_sync.append('--no-check-md5') else: - s3cmdargs.append('--check-md5') - if subprocess.call(s3cmdargs + [repo_section, s3url]) != 0: + s3cmd_sync.append('--check-md5') + if subprocess.call(s3cmd_sync + [repo_section, s3url]) != 0: raise FDroidException() From a4169484fdf67fb2644d3824227498cc75b6367e Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 10 Oct 2017 12:29:04 +0200 Subject: [PATCH 4/7] update: fix detection of Triple-T screenshots * https://github.com/westnordost/StreetComplete/issues/489 * https://forum.f-droid.org/t/screenshots-dont-show-up-in-client-using-gradle-play-publisher/881/2 #357 --- fdroidserver/update.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 883526c1..a77417a6 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -717,15 +717,16 @@ def copy_triple_t_store_metadata(apps): base, extension = common.get_extension(f) dirname = os.path.basename(root) - if dirname in GRAPHIC_NAMES and extension in ALLOWED_EXTENSIONS: + if extension in ALLOWED_EXTENSIONS \ + and (dirname in GRAPHIC_NAMES or dirname in SCREENSHOT_DIRS): if segments[-2] == 'listing': locale = segments[-3] else: locale = segments[-2] - destdir = os.path.join('repo', packageName, locale) + destdir = os.path.join('repo', packageName, locale, dirname) os.makedirs(destdir, mode=0o755, exist_ok=True) sourcefile = os.path.join(root, f) - destfile = os.path.join(destdir, dirname + '.' + extension) + destfile = os.path.join(destdir, os.path.basename(f)) logging.debug('copying ' + sourcefile + ' ' + destfile) shutil.copy(sourcefile, destfile) From 460c4185bb2641b9e67c2d743fa145df11ba69ea Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 10 Oct 2017 12:41:49 +0200 Subject: [PATCH 5/7] update: support Fastlane's official location for screenshots fastlane/android/metadata/locale/images/*Screenshots https://github.com/fastlane/fastlane/blob/2.61.0/screengrab/lib/screengrab/runner.rb#L324 closes #357 --- fdroidserver/update.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fdroidserver/update.py b/fdroidserver/update.py index a77417a6..526372b8 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -817,6 +817,9 @@ def insert_localized_app_metadata(apps): shutil.copy(os.path.join(root, f), destdir) for d in dirs: if d in SCREENSHOT_DIRS: + if locale == 'images': + locale = segments[-2] + destdir = os.path.join('repo', packageName, locale) for f in glob.glob(os.path.join(root, d, '*.*')): _, extension = common.get_extension(f) if extension in ALLOWED_EXTENSIONS: From ccc3fb8b2e793ad79eaae5a9bc5ca253adff89f0 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 13 Oct 2017 14:55:07 +0200 Subject: [PATCH 6/7] update translation template and add file context for each string The file context lets the translators know which command the string applies to. It does not have line numbers, since those are less useful, while causing lots of merge conflicts. --- locale/Makefile | 2 +- locale/fdroidserver.pot | 487 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 484 insertions(+), 5 deletions(-) diff --git a/locale/Makefile b/locale/Makefile index 2b4e25f1..15c49d8d 100644 --- a/locale/Makefile +++ b/locale/Makefile @@ -23,7 +23,7 @@ template: $(TEMPLATE) $(TEMPLATE): $(FILES) xgettext --join-existing --from-code=UTF-8 \ --language=Python --keyword=_ \ - --sort-output --no-location --output=$(TEMPLATE) \ + --sort-output --add-location=file --output=$(TEMPLATE) \ --package-name="fdroidserver" --package-version=$(VERSION) \ --foreign-user \ --msgid-bugs-address=https://gitlab.com/fdroid/fdroidserver/issues \ diff --git a/locale/fdroidserver.pot b/locale/fdroidserver.pot index 86f6a7fc..89419565 100644 --- a/locale/fdroidserver.pot +++ b/locale/fdroidserver.pot @@ -1,14 +1,13 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. +# This file is put in the public domain. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: fdroidserver 0.8-74-ga380b9f\n" +"Project-Id-Version: fdroidserver 0.8-134-gf4c5c29\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2017-09-15 23:36+0200\n" +"POT-Creation-Date: 2017-10-13 14:38+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,515 +15,877 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" +#: ../fdroidserver/lint.py #, python-format msgid "\"%s/\" has no matching metadata file!" msgstr "" +#: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "" +#: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "" +#: ../fdroidserver/index.py msgid "'keypass' not found in config.py!" msgstr "" +#: ../fdroidserver/index.py msgid "'keystore' not found in config.py!" msgstr "" +#: ../fdroidserver/index.py msgid "'keystorepass' not found in config.py!" msgstr "" +#: ../fdroidserver/index.py msgid "'repo_keyalias' not found in config.py!" msgstr "" +#: ../fdroidserver/common.py +msgid "'sdk_path' not set in 'config.py'!" +msgstr "" + +#: ../fdroidserver/common.py +#, python-brace-format +msgid "'{aapt}' is too old, fdroid requires build-tools-23.0.0 or newer!" +msgstr "" + +#: ../fdroidserver/install.py #, python-brace-format msgid "'{apkfilename}' is already installed on {dev}." msgstr "" +#: ../fdroidserver/common.py +#, python-brace-format +msgid "" +"'{field}' will be in random order! Use () or [] brackets if order is " +"important!" +msgstr "" + +#: ../fdroidserver/common.py +#, python-brace-format +msgid "'{path}' failed to execute!" +msgstr "" + +#: ../fdroidserver/checkupdates.py #, python-brace-format msgid "...checkupdate failed for {appid} : {error}" msgstr "" +#: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" msgid "Add PGP signatures for packages in repo using GnuPG" msgstr "" +#: ../fdroid +msgid "Add PGP signatures using GnuPG for packages in repo" +msgstr "" + +#: ../fdroid msgid "Add a new application from its source code" msgstr "" msgid "Add gpg signatures for packages in repo" msgstr "" +#: ../fdroidserver/init.py msgid "Alias of the repo signing key in the keystore" msgstr "" +#: ../fdroidserver/import.py msgid "" "Allows a different revision (or git branch) to be specified for the initial " "import" msgstr "" +#: ../fdroidserver/lint.py msgid "Also warn about formatting issues, like rewritemeta -l" msgstr "" +#: ../fdroidserver/common.py +#, python-brace-format +msgid "Android Build Tools path '{path}' does not exist!" +msgstr "" + +#: ../fdroidserver/common.py +#, python-brace-format +msgid "Android SDK '{path}' does not have '{dirname}' installed!" +msgstr "" + +#: ../fdroidserver/common.py +msgid "Android SDK not found!" +msgstr "" + +#: ../fdroidserver/common.py +#, python-brace-format +msgid "Android SDK path '{path}' does not exist!" +msgstr "" + +#: ../fdroidserver/common.py +#, python-brace-format +msgid "Android SDK path '{path}' is not a directory!" +msgstr "" + +#: ../fdroidserver/lint.py #, python-brace-format msgid "App is in '{repo}' but has a link to {url}" msgstr "" +#: ../fdroidserver/lint.py msgid "Appending .git is not necessary" msgstr "" +#: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in build '{versionName}'" msgstr "" +#: ../fdroidserver/lint.py #, python-brace-format msgid "Branch '{branch}' used as commit in srclib '{srclib}'" msgstr "" +#: ../fdroid msgid "Build a package from source" msgstr "" +#: ../fdroidserver/build.py msgid "Build all applications available" msgstr "" +#: ../fdroidserver/lint.py msgid "Build generated by `fdroid import` - remove disable line once ready" msgstr "" +#: ../fdroidserver/build.py msgid "Build only the latest version of each package" msgstr "" +#: ../fdroidserver/init.py #, python-format msgid "Built repo based in \"%s\" with this config:" msgstr "" +#: ../fdroidserver/build.py +msgid "Can't build due to {} error while scanning" +msgid_plural "Can't build due to {} errors while scanning" +msgstr[0] "" +msgstr[1] "" + +#: ../fdroidserver/rewritemeta.py msgid "Cannot use --list and --to at the same time" msgstr "" +#: ../fdroidserver/lint.py msgid "Categories are not set" msgstr "" +#: ../fdroidserver/lint.py #, python-format msgid "Category '%s' is not valid" msgstr "" +#: ../fdroid msgid "Check for updates to applications" msgstr "" +#: ../fdroidserver/dscanner.py msgid "Clean after all scans have finished" msgstr "" +#: ../fdroidserver/dscanner.py msgid "Clean before the scans start and rebuild the container" msgstr "" +#: ../fdroidserver/dscanner.py msgid "Clean up all containers and then exit" msgstr "" +#: ../fdroidserver/update.py msgid "Clean update - don't uses caches, reprocess all APKs" msgstr "" msgid "Clean update - don't uses caches, reprocess all apks" msgstr "" +#: ../fdroidserver/import.py msgid "Comma separated list of categories." msgstr "" +#: ../fdroid #, c-format, python-format msgid "Command '%s' not recognised.\n" msgstr "" +#: ../fdroidserver/checkupdates.py msgid "Commit changes" msgstr "" +#: ../fdroidserver/common.py +#, python-brace-format +msgid "Could not find '{command}' on your system" +msgstr "" + +#: ../fdroidserver/import.py msgid "Couldn't find latest version code" msgstr "" +#: ../fdroidserver/import.py msgid "Couldn't find latest version name" msgstr "" +#: ../fdroidserver/import.py msgid "Couldn't find package ID" msgstr "" +#: ../fdroidserver/update.py msgid "Create a repo signing key in a keystore" msgstr "" +#: ../fdroidserver/update.py msgid "Create skeleton metadata files that are missing" msgstr "" +#: ../fdroidserver/server.py +#, python-brace-format +msgid "Created new container \"{name}\"" +msgstr "" + +#: ../fdroidserver/publish.py msgid "Creating log directory" msgstr "" +#: ../fdroidserver/server.py +#, python-brace-format +msgid "Creating new S3 bucket: {url}" +msgstr "" + +#: ../fdroidserver/publish.py msgid "Creating output directory" msgstr "" +#: ../fdroidserver/index.py msgid "Creating signed index with this key (SHA256):" msgstr "" +#: ../fdroidserver/import.py ../fdroidserver/verify.py +#: ../fdroidserver/publish.py msgid "Creating temporary directory" msgstr "" +#: ../fdroidserver/index.py msgid "Creating unsigned index in preparation for signing" msgstr "" +#: ../fdroidserver/update.py msgid "Delete APKs and/or OBBs without metadata from the repo" msgstr "" +#: ../fdroidserver/lint.py #, python-format msgid "Description '%s' is just the app's summary" msgstr "" +#: ../fdroidserver/lint.py msgid "Description has a duplicate line" msgstr "" +#: ../fdroidserver/lint.py #, python-format msgid "Description has a list (%s) but it isn't bulleted (*) nor numbered (#)" msgstr "" +#: ../fdroidserver/lint.py #, python-brace-format msgid "Description of length {length} is over the {limit} char limit" msgstr "" +#: ../fdroidserver/init.py msgid "Do not prompt for Android SDK path, just fail" msgstr "" +#: ../fdroidserver/build.py msgid "Don't create a source tarball, useful when testing a build" msgstr "" +#: ../fdroidserver/stats.py msgid "Don't do anything logs-related" msgstr "" +#: ../fdroidserver/build.py msgid "" "Don't refresh the repository, useful when testing a build with no internet " "connection" msgstr "" +#: ../fdroidserver/server.py msgid "Don't use rsync checksums" msgstr "" +#: ../fdroidserver/stats.py msgid "Download logs we don't have" msgstr "" +#: ../fdroidserver/common.py +msgid "Downloading the repository already failed once, not trying again." +msgstr "" + +#: ../fdroidserver/verify.py #, python-brace-format msgid "Downloading {url} failed. {error}" msgstr "" +#: ../fdroidserver/lint.py #, python-brace-format msgid "Duplicate link in '{field}': {url}" msgstr "" +#: ../fdroid msgid "Dynamically scan APKs post build" msgstr "" +#: ../fdroidserver/init.py #, python-format msgid "" "Enter the path to the Android SDK (%s) here:\n" "> " msgstr "" +#: ../fdroidserver/import.py msgid "Error while getting repo address" msgstr "" +#: ../fdroid msgid "Extract signatures from APKs" msgstr "" +#: ../fdroidserver/signatures.py #, python-brace-format msgid "Failed fetching signatures for '{apkfilename}': {error}" msgstr "" +#: ../fdroidserver/publish.py msgid "Failed to align application" msgstr "" +#: ../fdroidserver/server.py +#, python-brace-format +msgid "Failed to create S3 bucket: {url}" +msgstr "" + +#: ../fdroidserver/common.py +msgid "Failed to get APK manifest information" +msgstr "" + +#: ../fdroidserver/install.py #, python-brace-format msgid "Failed to install '{apkfilename}' on {dev}: {error}" msgstr "" +#: ../fdroidserver/publish.py msgid "Failed to sign application" msgstr "" +#: ../fdroidserver/signatures.py #, python-brace-format msgid "Fetched signatures for '{apkfilename}' -> '{sigdir}'" msgstr "" +#: ../fdroidserver/verify.py ../fdroidserver/stats.py ../fdroidserver/update.py +#: ../fdroidserver/rewritemeta.py ../fdroidserver/build.py +#: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py +#: ../fdroidserver/install.py msgid "Finished" msgstr "" +#: ../fdroidserver/lint.py msgid "Flattr donation methods belong in the FlattrID flag" msgstr "" +#: ../fdroidserver/build.py msgid "" "Force build of disabled apps, and carries on regardless of scan problems. " "Only allowed in test mode." msgstr "" +#: ../fdroidserver/common.py +msgid "Found invalid appids in arguments" +msgstr "" + +#: ../fdroidserver/common.py +msgid "Found invalid versionCodes for some apps" +msgstr "" + +#: ../fdroidserver/index.py msgid "Found multiple signing certificates for repository." msgstr "" +#: ../fdroidserver/index.py msgid "Found no signing certificates for repository." msgstr "" +#: ../fdroidserver/lint.py #, python-format msgid "Found non-file at %s" msgstr "" +#: ../fdroidserver/common.py +#, python-format +msgid "Git checkout of '%s' failed" +msgstr "" + +#: ../fdroidserver/common.py +msgid "Git clean failed" +msgstr "" + +#: ../fdroidserver/common.py +msgid "Git fetch failed" +msgstr "" + +#: ../fdroidserver/common.py +msgid "Git remote set-head failed" +msgstr "" + +#: ../fdroidserver/common.py +msgid "Git reset failed" +msgstr "" + +#: ../fdroidserver/common.py +msgid "Git submodule sync failed" +msgstr "" + +#: ../fdroidserver/common.py +msgid "Git submodule update failed" +msgstr "" + +#: ../fdroidserver/index.py msgid "Ignoring package without metadata: " msgstr "" +#: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Ignoring {ext} file at '{path}'" msgstr "" +#: ../fdroidserver/update.py msgid "Include APKs that are signed with disabled algorithms like MD5" msgstr "" +#: ../fdroidserver/common.py +msgid "Initialising submodules" +msgstr "" + +#: ../fdroidserver/install.py msgid "Install all signed applications available" msgstr "" +#: ../fdroid msgid "Install built packages on devices" msgstr "" +#: ../fdroidserver/install.py #, python-format msgid "Installing %s..." msgstr "" +#: ../fdroidserver/install.py #, python-brace-format msgid "Installing '{apkfilename}' on {dev}..." msgstr "" +#: ../fdroid msgid "Interact with the repo HTTP server" msgstr "" +#: ../fdroidserver/update.py msgid "Interactively ask about things that need updating." msgstr "" +#: ../fdroidserver/lint.py msgid "Invalid bulleted list" msgstr "" +#: ../fdroidserver/lint.py #, python-format msgid "" "Invalid license tag \"%s\"! Use only tags from https://spdx.org/license-list" msgstr "" +#: ../fdroidserver/lint.py msgid "Invalid link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" +#: ../fdroidserver/common.py +#, python-format +msgid "Invalid name for published file: %s" +msgstr "" + +#: ../fdroidserver/common.py +#, python-brace-format +msgid "Invalid package name {0}" +msgstr "" + +#: ../fdroidserver/publish.py msgid "Java JDK not found! Install in standard location or set java_paths!" msgstr "" +#: ../fdroidserver/signindex.py msgid "" "Java jarsigner not found! Install in standard location or set java_paths!" msgstr "" +#: ../fdroidserver/init.py msgid "Keystore for signing key:\t" msgstr "" +#: ../fdroidserver/lint.py #, python-brace-format msgid "" "Last used commit '{commit}' looks like a tag, but Update Check Mode is " "'{ucm}'" msgstr "" +#: ../fdroidserver/rewritemeta.py msgid "List files that would be reformatted" msgstr "" +#: ../fdroidserver/build.py msgid "Make the build stop on exceptions" msgstr "" +#: ../fdroidserver/index.py msgid "Malformed repository mirrors." msgstr "" +#: ../fdroidserver/server.py msgid "Malformed serverwebroot line:" msgstr "" +#: ../fdroidserver/gpgsign.py msgid "Missing output directory" msgstr "" +#: ../fdroidserver/lint.py #, python-format msgid "Name '%s' is just the auto name - remove it" msgstr "" +#: ../fdroidserver/common.py +msgid "No 'config.py' found, using defaults." +msgstr "" + +#: ../fdroidserver/common.py +msgid "No Android SDK found!" +msgstr "" + +#: ../fdroidserver/import.py msgid "No android or kivy project could be found. Specify --subdir?" msgstr "" +#: ../fdroidserver/install.py msgid "No attached devices found" msgstr "" +#: ../fdroidserver/index.py msgid "No fingerprint in URL." msgstr "" +#: ../fdroidserver/common.py +msgid "No git submodules available" +msgstr "" + +#: ../fdroidserver/import.py msgid "No information found." msgstr "" +#: ../fdroidserver/lint.py msgid "No need to specify that the app is Free Software" msgstr "" +#: ../fdroidserver/lint.py msgid "No need to specify that the app is for Android" msgstr "" +#: ../fdroidserver/server.py msgid "No option set! Edit your config.py to set at least one of these:" msgstr "" +#: ../fdroidserver/common.py +msgid "No packages specified" +msgstr "" + +#: ../fdroidserver/install.py #, python-format msgid "No signed apk available for %s" msgstr "" +#: ../fdroidserver/install.py msgid "No signed output directory - nothing to do" msgstr "" +#: ../fdroidserver/common.py +#, python-format +msgid "No such package: %s" +msgstr "" + +#: ../fdroidserver/common.py +#, python-brace-format +msgid "No such versionCode {versionCode} for app {appid}" +msgstr "" + +#: ../fdroidserver/verify.py ../fdroidserver/publish.py msgid "No unsigned directory - nothing to do" msgstr "" +#: ../fdroidserver/signindex.py msgid "Nothing to do" msgstr "" +#: ../fdroidserver/checkupdates.py #, python-brace-format msgid "Nothing to do for {appid}." msgstr "" +#: ../fdroidserver/checkupdates.py msgid "Only print differences with the Play Store" msgstr "" +#: ../fdroidserver/checkupdates.py msgid "Only process apps with auto-updates" msgstr "" +#: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "" +#: ../fdroidserver/dscanner.py msgid "Override path for repo APKs (default: ./repo)" msgstr "" +#: ../fdroidserver/common.py +#, python-brace-format +msgid "Parsing manifest at '{path}'" +msgstr "" + +#: ../fdroidserver/common.py +msgid "Password required with username" +msgstr "" + +#: ../fdroidserver/import.py msgid "Path to main Android project subdirectory, if not in root." msgstr "" msgid "Path to main android project subdirectory, if not in root." msgstr "" +#: ../fdroidserver/init.py msgid "Path to the Android SDK (sometimes set in ANDROID_HOME)" msgstr "" +#: ../fdroidserver/btlog.py msgid "Path to the git repo to use as the log" msgstr "" +#: ../fdroidserver/init.py msgid "Path to the keystore for the repo signing key" msgstr "" +#: ../fdroidserver/dscanner.py msgid "Prepare Drozer to run a scan" msgstr "" msgid "Prepare drozer to run a scan" msgstr "" +#: ../fdroidserver/common.py +#, python-brace-format +msgid "Problem with xml at '{path}'" +msgstr "" + +#: ../fdroidserver/checkupdates.py msgid "Process auto-updates" msgstr "" +#: ../fdroidserver/publish.py ../fdroidserver/update.py #, python-brace-format msgid "Processing {apkfilename}" msgstr "" +#: ../fdroidserver/checkupdates.py ../fdroidserver/scanner.py #, python-brace-format msgid "Processing {appid}" msgstr "" +#: ../fdroidserver/update.py msgid "Produce human-readable index.xml" msgstr "" +#: ../fdroidserver/import.py msgid "Project URL to import from." msgstr "" +#: ../fdroidserver/lint.py msgid "Punctuation should be avoided" msgstr "" +#: ../fdroidserver/btlog.py msgid "Push the log to this git remote repository" msgstr "" +#: ../fdroidserver/server.py +#, python-brace-format +msgid "Pushing binary transparency log to {url}" +msgstr "" + +#: ../fdroidserver/server.py +#, python-brace-format +msgid "Pushing to {url}" +msgstr "" + +#: ../fdroid msgid "Quickly start a new repository" msgstr "" +#: ../fdroid msgid "Read all the metadata files and exit" msgstr "" +#: ../fdroidserver/common.py +#, python-brace-format +msgid "Reading '{config_file}'" +msgstr "" + +#: ../fdroidserver/common.py +#, python-brace-format +msgid "" +"Reading packageName/versionCode/versionName failed, APK invalid: " +"'{apkfilename}'" +msgstr "" + +#: ../fdroidserver/stats.py msgid "" "Recalculate aggregate stats - use when changes have been made that would " "invalidate old cached data." msgstr "" +#: ../fdroidserver/common.py +msgid "Removing specified files" +msgstr "" + +#: ../fdroidserver/update.py msgid "Rename APK files that do not match package.name_123.apk" msgstr "" +#: ../fdroidserver/update.py msgid "Report on build data status" msgstr "" +#: ../fdroidserver/build.py msgid "" "Reset and create a brand new build server, even if the existing one appears " "to be ok." msgstr "" +#: ../fdroidserver/update.py msgid "Resize all the icons exceeding the max pixel size and exit" msgstr "" +#: ../fdroidserver/common.py msgid "Restrict output to warnings and errors" msgstr "" +#: ../fdroid msgid "Rewrite all the metadata files" msgstr "" +#: ../fdroidserver/rewritemeta.py msgid "Rewrite to a specific format: " msgstr "" +#: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}'" msgstr "" +#: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Rewriting '{appid}' to '{path}'" msgstr "" +#: ../fdroidserver/lint.py msgid "Run rewritemeta to fix formatting" msgstr "" +#: ../fdroidserver/server.py +msgid "Running first pass with MD5 checking disabled" +msgstr "" + +#: ../fdroidserver/dscanner.py msgid "Scan only the latest version of each package" msgstr "" +#: ../fdroid msgid "Scan the source code of a package" msgstr "" +#: ../fdroidserver/build.py +msgid "Scanner found {} problem" +msgid_plural "Scanner found {} problems" +msgstr[0] "" +msgstr[1] "" + +#: ../fdroidserver/build.py msgid "Setup an emulator, install the APK on it and perform a Drozer scan" msgstr "" msgid "Setup an emulator, install the apk on it and perform a drozer scan" msgstr "" +#: ../fdroid msgid "Sign and place packages in the repo" msgstr "" +#: ../fdroid msgid "Sign indexes created using update --nosign" msgstr "" +#: ../fdroidserver/build.py msgid "Skip scanning the source code for binaries and other problems" msgstr "" +#: ../fdroidserver/update.py #, python-brace-format msgid "Skipping '{apkfilename}' with invalid signature!" msgstr "" +#: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: disabled" msgstr "" +#: ../fdroidserver/scanner.py #, python-brace-format msgid "Skipping {appid}: no builds specified" msgstr "" +#: ../fdroidserver/server.py msgid "Specify a local folder to sync the repo to" msgstr "" +#: ../fdroidserver/server.py msgid "Specify an identity file to provide to SSH for rsyncing" msgstr "" +#: ../fdroidserver/update.py msgid "Specify editor to use in interactive mode. Default " msgstr "" @@ -532,118 +893,172 @@ msgstr "" msgid "Specify editor to use in interactive mode. Default %s" msgstr "" +#: ../fdroidserver/build.py msgid "Specify that we're running on the build server" msgstr "" +#: ../fdroidserver/common.py msgid "Spew out even more information than normal" msgstr "" +#: ../fdroidserver/lint.py #, python-format msgid "Summary '%s' is just the app's name" msgstr "" +#: ../fdroidserver/lint.py #, python-brace-format msgid "Summary of length {length} is over the {limit} char limit" msgstr "" +#: ../fdroidserver/build.py msgid "" "Test mode - put output in the tmp directory only, and always build, even if " "the output already exists." msgstr "" +#: ../fdroidserver/btlog.py msgid "The base URL for the repo to log (default: https://f-droid.org)" msgstr "" +#: ../fdroidserver/server.py msgid "The only commands currently supported are 'init' and 'update'" msgstr "" +#: ../fdroidserver/index.py msgid "The repository's fingerprint does not match." msgstr "" +#: ../fdroidserver/common.py msgid "The repository's index could not be verified." msgstr "" +#: ../fdroidserver/server.py +#, python-brace-format +msgid "The root dir for local_copy_dir \"{path}\" does not exist!" +msgstr "" + +#: ../fdroidserver/publish.py msgid "There is a keyalias collision - publishing halted" msgstr "" +#: ../fdroidserver/import.py #, python-format msgid "This repo already has local metadata: %s" msgstr "" +#: ../fdroidserver/server.py +msgid "" +"To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config." +"py!" +msgstr "" + +#: ../fdroidserver/lint.py msgid "UCM is set but it looks like checkupdates hasn't been run yet" msgstr "" +#: ../fdroidserver/lint.py msgid "URL shorteners should not be used" msgstr "" +#: ../fdroidserver/lint.py #, python-brace-format msgid "URL {url} in Description: {error}" msgstr "" +#: ../fdroid msgid "Unknown exception found!" msgstr "" +#: ../fdroidserver/lint.py #, python-brace-format msgid "Unknown file '{filename}' in build '{versionName}'" msgstr "" +#: ../fdroidserver/common.py +msgid "Unknown version of aapt, might cause problems: " +msgstr "" + +#: ../fdroidserver/lint.py msgid "Unlinkified link - use [http://foo.bar Link title] or [http://foo.bar]" msgstr "" +#: ../fdroidserver/lint.py msgid "Unnecessary leading space" msgstr "" +#: ../fdroidserver/lint.py msgid "Unnecessary trailing space" msgstr "" +#: ../fdroidserver/rewritemeta.py #, python-brace-format msgid "Unsupported metadata format, use: --to [{supported}]" msgstr "" +#: ../fdroidserver/lint.py #, python-format msgid "Unused extlib at %s" msgstr "" +#: ../fdroidserver/lint.py #, python-format msgid "Unused file at %s" msgstr "" +#: ../fdroidserver/lint.py msgid "Update Check Name is set to the known app id - it can be removed" msgstr "" +#: ../fdroid msgid "Update repo information for new packages" msgstr "" +#: ../fdroid msgid "Update the binary transparency log for a URL" msgstr "" +#: ../fdroid msgid "Update the stats of the repo" msgstr "" +#: ../fdroidserver/update.py ../fdroidserver/build.py msgid "Update the wiki" msgstr "" +#: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" +#: ../fdroidserver/build.py msgid "Use build server" msgstr "" +#: ../fdroidserver/update.py msgid "Use date from APK instead of current time for newly added APKs" msgstr "" msgid "Use date from apk instead of current time for newly added apks" msgstr "" +#: ../fdroidserver/server.py +#, python-brace-format +msgid "Using s3cmd to sync with: {url}" +msgstr "" + +#: ../fdroid msgid "Valid commands are:" msgstr "" +#: ../fdroid msgid "Verify the integrity of downloaded packages" msgstr "" +#: ../fdroid msgid "Warn about possible metadata errors" msgstr "" +#: ../fdroidserver/update.py msgid "" "When configured for signed indexes, create only unsigned indexes at this " "stage" @@ -652,9 +1067,14 @@ msgstr "" msgid "X.509 'Distiguished Name' used when generating keys" msgstr "" +#: ../fdroidserver/init.py msgid "X.509 'Distinguished Name' used when generating keys" msgstr "" +#: ../fdroidserver/common.py +msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" +msgstr "" + msgid "app-id in the form APPID" msgstr "" @@ -667,59 +1087,118 @@ msgstr "" msgid "app-id with optional versioncode in the form APPID[:VERCODE]" msgstr "" +#: ../fdroidserver/lint.py ../fdroidserver/rewritemeta.py msgid "applicationId in the form APPID" msgstr "" +#: ../fdroidserver/checkupdates.py msgid "applicationId to check for updates" msgstr "" +#: ../fdroidserver/verify.py ../fdroidserver/publish.py +#: ../fdroidserver/dscanner.py ../fdroidserver/build.py +#: ../fdroidserver/scanner.py ../fdroidserver/install.py msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" +#: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "" +#: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "" +#: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" +#: ../fdroidserver/server.py +#, python-brace-format +msgid "" +"local_copy_dir does not end with \"fdroid\", perhaps you meant: \"{path}\"" +msgstr "" + +#: ../fdroidserver/server.py msgid "local_copy_dir must be an absolute path!" msgstr "" +#: ../fdroidserver/server.py msgid "local_copy_dir must be directory, not a file!" msgstr "" +#: ../fdroidserver/index.py #, python-format msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" +#: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" +#: ../fdroid msgid "no version info found!" msgstr "" +#: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" +#: ../fdroidserver/install.py #, python-format msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" +#: ../fdroidserver/signatures.py #, python-brace-format msgid "" "refuse downloading via insecure http connection (use https or specify --no-" "https-check): {apkfilename}" msgstr "" +#: ../fdroidserver/server.py +#, python-brace-format +msgid "s3cmd sync indexes {path} to {url} and delete" +msgstr "" + +#: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" +#: ../fdroidserver/common.py +#, python-brace-format +msgid "unsafe permissions on '{config_file}' (should be 0600)!" +msgstr "" + +#: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr "" +#: ../fdroidserver/server.py +#, python-brace-format +msgid "using Apache libcloud to sync with {url}" +msgstr "" + +#: ../fdroidserver/publish.py +#, python-brace-format +msgid "{0} app, {1} key aliases" +msgid_plural "{0} apps, {1} key aliases" +msgstr[0] "" +msgstr[1] "" + +#: ../fdroidserver/lint.py #, python-brace-format msgid "{appid}: Unknown extlib {path} in build '{versionName}'" msgstr "" + +#: ../fdroidserver/build.py +msgid "{} build failed" +msgid_plural "{} builds failed" +msgstr[0] "" +msgstr[1] "" + +#: ../fdroidserver/build.py +msgid "{} build succeeded" +msgid_plural "{} builds succeeded" +msgstr[0] "" +msgstr[1] "" From 6a8152af1546973a9924061489ae5e55d3a36ea7 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 13 Oct 2017 14:50:22 +0200 Subject: [PATCH 7/7] include all argparse strings in translation template The Python argparse library has its own strings, which are translatable via gettext. This gets those sources strings from the library, and includes them in this project. Since gettext is invoked and configured in fdroidserver, fdroidserver needs to handle the translations for the libraries it uses. --- locale/Makefile | 5 +- locale/fdroidserver.pot | 250 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 252 insertions(+), 3 deletions(-) diff --git a/locale/Makefile b/locale/Makefile index 15c49d8d..fdfa804c 100644 --- a/locale/Makefile +++ b/locale/Makefile @@ -1,5 +1,8 @@ -FILES = ../fdroid $(wildcard ../fdroidserver/*.py) +FILES = ../fdroid $(wildcard ../fdroidserver/*.py) \ + $(wildcard /usr/lib/python3.*/argparse.py) \ + $(wildcard /usr/lib/python3.*/optparse.py) \ + $(wildcard /usr/lib/python3.*/getopt.py) # these are the supported languages ALL_LINGUAS = de es pt_BR pt_PT tr zh_Hans zh_Hant diff --git a/locale/fdroidserver.pot b/locale/fdroidserver.pot index 89419565..c49eff0c 100644 --- a/locale/fdroidserver.pot +++ b/locale/fdroidserver.pot @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: fdroidserver 0.8-134-gf4c5c29\n" +"Project-Id-Version: fdroidserver 0.8-135-g16dd6d28\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" -"POT-Creation-Date: 2017-10-13 14:38+0200\n" +"POT-Creation-Date: 2017-10-13 12:47+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,16 +22,42 @@ msgstr "" msgid "\"%s/\" has no matching metadata file!" msgstr "" +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +#, python-format +msgid "%(option)s option requires %(number)d argument" +msgid_plural "%(option)s option requires %(number)d arguments" +msgstr[0] "" +msgstr[1] "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "%(prog)s: error: %(message)s\n" +msgstr "" + #: ../fdroidserver/scanner.py #, python-format msgid "%d problems found" msgstr "" +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +msgid "%prog [options]" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "%r is not callable" +msgstr "" + #: ../fdroidserver/lint.py #, python-format msgid "%s is not an accepted build field" msgstr "" +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +#, python-format +msgid "%s option does not take a value" +msgstr "" + #: ../fdroidserver/index.py msgid "'keypass' not found in config.py!" msgstr "" @@ -48,6 +74,10 @@ msgstr "" msgid "'repo_keyalias' not found in config.py!" msgstr "" +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +msgid "'required' is an invalid argument for positionals" +msgstr "" + #: ../fdroidserver/common.py msgid "'sdk_path' not set in 'config.py'!" msgstr "" @@ -79,6 +109,10 @@ msgstr "" msgid "...checkupdate failed for {appid} : {error}" msgstr "" +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +msgid ".__call__() not defined" +msgstr "" + #: ../fdroidserver/lint.py msgid "/issues is missing" msgstr "" @@ -663,6 +697,10 @@ msgstr "" msgid "Only process apps with auto-updates" msgstr "" +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +msgid "Options" +msgstr "" + #: ../fdroidserver/import.py msgid "Overall license of the project." msgstr "" @@ -1026,6 +1064,15 @@ msgstr "" msgid "Update the wiki" msgstr "" +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +msgid "Usage" +msgstr "" + +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +#, python-format +msgid "Usage: %s\n" +msgstr "" + #: ../fdroidserver/lint.py msgid "Use /HEAD instead of /master to point at a file in the default branch" msgstr "" @@ -1075,6 +1122,16 @@ msgstr "" msgid "You can use ANDROID_HOME to set the path to your SDK, i.e.:" msgstr "" +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "ambiguous option: %(option)s could match %(matches)s" +msgstr "" + +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +#, python-format +msgid "ambiguous option: %s (%s?)" +msgstr "" + msgid "app-id in the form APPID" msgstr "" @@ -1101,18 +1158,107 @@ msgstr "" msgid "applicationId with optional versionCode in the form APPID[:VERCODE]" msgstr "" +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "argument \"-\" with mode %r" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "can't open '%s': %s" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +msgid "cannot have multiple subparser arguments" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "cannot merge actions - two groups are named %r" +msgstr "" + #: ../fdroidserver/server.py msgid "command to execute, either 'init' or 'update'" msgstr "" +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +msgid "complex" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "conflicting option string: %s" +msgid_plural "conflicting option strings: %s" +msgstr[0] "" +msgstr[1] "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "dest= is required for options like %r" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "expected %s argument" +msgid_plural "expected %s arguments" +msgstr[0] "" +msgstr[1] "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +msgid "expected at least one argument" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +msgid "expected at most one argument" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +msgid "expected one argument" +msgstr "" + +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +msgid "floating-point" +msgstr "" + #: ../fdroidserver/metadata.py msgid "force errors to be warnings, or ignore" msgstr "" +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "ignored explicit argument %r" +msgstr "" + #: ../fdroidserver/index.py msgid "index-v1 must have a signature, use `fdroid signindex` to create it!" msgstr "" +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +msgid "integer" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "invalid %(type)s value: %(value)r" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "invalid choice: %(value)r (choose from %(choices)s)" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "invalid conflict_resolution value: %r" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "" +"invalid option string %(option)r: must start with a character " +"%(prefix_chars)r" +msgstr "" + #: ../fdroidserver/server.py #, python-brace-format msgid "" @@ -1132,14 +1278,33 @@ msgstr "" msgid "mirror '%s' does not end with 'fdroid'!" msgstr "" +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +msgid "mutually exclusive arguments must be optional" +msgstr "" + #: ../fdroidserver/signatures.py msgid "no APK supplied" msgstr "" +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +#, python-format +msgid "no such option: %s" +msgstr "" + #: ../fdroid msgid "no version info found!" msgstr "" +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "not allowed with argument %s" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "one of the arguments %s is required" +msgstr "" + #: ../fdroidserver/index.py ../fdroidserver/common.py msgid "only accepts strings, lists, and tuples" msgstr "" @@ -1149,6 +1314,54 @@ msgstr "" msgid "option %s: If you really want to install all the signed apps, use --all" msgstr "" +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +#, python-format +msgid "option %s: invalid %s value: %r" +msgstr "" + +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +#, python-format +msgid "option %s: invalid choice: %r (choose from %s)" +msgstr "" + +#: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py +#, python-format +msgid "option -%s not recognized" +msgstr "" + +#: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py +#, python-format +msgid "option -%s requires argument" +msgstr "" + +#: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py +#, python-format +msgid "option --%s must not have an argument" +msgstr "" + +#: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py +#, python-format +msgid "option --%s not a unique prefix" +msgstr "" + +#: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py +#, python-format +msgid "option --%s not recognized" +msgstr "" + +#: /usr/lib/python3.5/getopt.py /usr/lib/python3.6/getopt.py +#, python-format +msgid "option --%s requires argument" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +msgid "optional arguments" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +msgid "positional arguments" +msgstr "" + #: ../fdroidserver/signatures.py #, python-brace-format msgid "" @@ -1161,15 +1374,48 @@ msgstr "" msgid "s3cmd sync indexes {path} to {url} and delete" msgstr "" +#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py +msgid "show program's version number and exit" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.5/optparse.py +#: /usr/lib/python3.6/argparse.py /usr/lib/python3.6/optparse.py +msgid "show this help message and exit" +msgstr "" + #: ../fdroidserver/signatures.py msgid "signed APK, either a file-path or HTTPS URL." msgstr "" +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "the following arguments are required: %s" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "unexpected option string: %s" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "unknown parser %(parser_name)r (choices: %(choices)s)" +msgstr "" + +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +#, python-format +msgid "unrecognized arguments: %s" +msgstr "" + #: ../fdroidserver/common.py #, python-brace-format msgid "unsafe permissions on '{config_file}' (should be 0600)!" msgstr "" +#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py +msgid "usage: " +msgstr "" + #: ../fdroid msgid "usage: fdroid [-h|--help|--version] []" msgstr ""