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 diff --git a/fdroidserver/server.py b/fdroidserver/server.py index aa15284f..013f155f 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) @@ -78,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, @@ -101,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, @@ -109,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() @@ -129,7 +138,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 +148,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 +157,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 +414,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 +551,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 +640,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 += '/' diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 883526c1..526372b8 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) @@ -816,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: diff --git a/locale/Makefile b/locale/Makefile index 2b4e25f1..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 @@ -23,7 +26,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..c49eff0c 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-135-g16dd6d28\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 12:47+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,515 +15,915 @@ 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 "" +#: /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 "" +#: ../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 "" +#: /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 "" + +#: ../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 "" +#: /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 "" 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 "" +#: /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 "" +#: ../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 +931,181 @@ 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 "" +#: /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 "" +#: ../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 +1114,24 @@ 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 "" + +#: /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 "" @@ -667,59 +1144,307 @@ 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 "" +#: /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 "" +"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 "" +#: /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 "" +#: ../fdroidserver/install.py #, python-format 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 "" "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 "" + +#: /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 "" +#: ../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] ""