1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-09-21 12:20:12 +02:00

Compare commits

..

67 Commits

Author SHA1 Message Date
proletarius101
da5ff1c928
chore(deploy): rename index_only variable to is_index_only for Python idiomaticness 2024-06-04 20:30:35 +08:00
proletarius101
dc3fd0bdd1
chore(deploy): clean up code 2024-06-04 20:27:01 +08:00
proletarius101
c26267a7f9
fix(deploy): remove the --index-only flag 2024-06-04 20:22:56 +08:00
proletarius101
48c48596a8
fix(deploy): $GIT_MIRROR/fdroid/repo/com.politedroid_6.apk doesn't exist when the test is finished 2024-06-04 20:10:13 +08:00
proletarius101
5ff9a19072
style(deploy): rename working_dir_root variable to workspace_dir 2024-06-05 03:52:02 +08:00
proletarius101
78b6e53e42
style(deploy): fix pyflake 2024-06-05 02:38:14 +08:00
proletarius101
40ecaff6fe
fix(deploy): all files are uploaded if the index only mode deployment follows a full mode one
switch the branch before rsyncing
2024-06-03 21:09:03 +08:00
proletarius101
5aeece612f
chore(deploy): convert print to logging for in-order output 2024-06-03 00:58:17 +08:00
proletarius101
abdaced2a5
fix(deploy): all files are uploaded if the index only mode deployment follows a full mode one
create new branches from groud up
2024-06-03 00:51:54 +08:00
proletarius101
3833bc7d6e
fix(deploy): all files are uploaded if the index only mode deployment follows a full mode one
let rsync only sync necessary files
2024-06-03 00:45:45 +08:00
proletarius101
7d123b5578
fix(deploy): all files are uploaded if the index only mode deployment follows a full mode one 2024-06-03 00:30:57 +08:00
proletarius101
59fdaa321c
debug 2024-06-03 00:24:19 +08:00
proletarius101
9441d0e849
fix(deploy): fatal: A branch named 'full' already exists. 2024-06-02 23:37:06 +08:00
proletarius101
a09552207d
test(deploy): make sure the APK file is not uploaded in the index only mode 2024-06-02 23:27:58 +08:00
proletarius101
10c06b8b44
fix(deploy): local files are not synced to the local git repo 2024-06-02 23:06:23 +08:00
proletarius101
d2a867a018
fix(deploy): remove unnecessary additional initial commit
and fix the test error: https://gitlab.com/proletarius101/fdroidserver/-/jobs/6997355250#L6978
2024-06-02 21:13:37 +08:00
proletarius101
a19fc1d607
chore(deploy): list all files in the local git repo 2024-06-02 19:39:05 +08:00
proletarius101
cd2a0fbf29
fix(deploy): files are not pushed to the remote 2024-06-02 19:31:13 +08:00
proletarius101
04c191e4d8
test(deploy): fix fdroidserver.deploy.options is None 2024-05-23 22:40:51 +08:00
proletarius101
5fe1fa9dd3
test(deploy): fix errors 2024-05-20 00:55:28 +08:00
proletarius101
092a8dda2e
fix(deploy): don't recreate the branches 2024-05-20 00:16:27 +08:00
proletarius101
4f09ba2bff
fix: No such file or directory: 'repo/entry.jar' 2024-04-06 22:44:47 +08:00
proletarius101
c148ea3d8e
test 2024-04-06 22:30:50 +08:00
proletarius101
d79ac8e2dc
test 2024-04-06 22:23:36 +08:00
proletarius101
5aef1da1fc
test 2024-04-06 22:19:13 +08:00
proletarius101
e966ac2efe
test 2024-04-06 22:17:40 +08:00
proletarius101
1cc23b20c8
test 2024-04-06 17:46:31 +08:00
proletarius101
a5740f364c
fix(deploy): align the config naming 2024-04-06 17:41:16 +08:00
proletarius101
4f2ec8f2e3
test 2024-04-06 17:20:30 +08:00
proletarius101
5a46b062f4
test 2024-04-06 17:18:23 +08:00
proletarius101
649bb5b1bc
test 2024-04-06 17:16:45 +08:00
proletarius101
462786bb37
test 2024-04-06 17:13:24 +08:00
proletarius101
31f9919073
test 2024-04-06 17:10:12 +08:00
proletarius101
cd23cf659b
fix(deploy): error: The branch 'full' is not fully merged. 2024-04-06 16:49:24 +08:00
proletarius101
d9984dbeea
fix(deploy): error: The following untracked working tree files would be overwritten by checkout 2024-04-06 16:45:03 +08:00
proletarius101
6ddf241713
fix: no files are uploaded 2024-04-06 16:36:38 +08:00
proletarius101
5e0980b98a
fix(deploy): Reference at 'refs/heads/full' does already exist 2024-04-06 16:11:12 +08:00
proletarius101
d2ada6e418
fix: index only mode setting doesn't work if it follows a full mode config 2024-04-06 16:01:51 +08:00
proletarius101
96d1f4190f
fix: index only mode setting doesn't work if it follows a full mode config 2024-04-06 14:53:54 +08:00
Hans-Christoph Steiner
2d267e6cbd fix: avoid making the parent directory redundantly in test case 2024-04-06 05:49:49 +00:00
proletarius101
513b223caa lint: fix pydocstyle 2024-02-28 08:02:35 +00:00
proletarius101
6271de094e fix: ModuleNotFoundError 2024-02-28 08:02:35 +00:00
proletarius101
51b88b784b lint: fix black formatting 2024-02-28 08:02:35 +00:00
proletarius101
7022eabe84 fix(deploy): remove the index-only mode from elsewhere except the config file
To enable per-remote configuration
2024-02-28 08:02:35 +00:00
proletarius101
1e259cb043 style: fix lint 2024-02-28 08:02:35 +00:00
proletarius101
b3c15038da style: fix lint 2024-02-28 08:02:35 +00:00
proletarius101
775316747c style: fix lint 2024-02-28 08:02:35 +00:00
proletarius101
4a793cd67a refactor: use _get_index_file_paths() instead of this mix of --include/--exclude 2024-02-28 08:02:35 +00:00
proletarius101
e05bc9c1db refactor: remove the support of the index only mode when syncing to the local filesystem 2024-02-28 08:02:35 +00:00
proletarius101
6b1c5bae0f chore: revert repository vscode settings 2024-02-28 08:02:35 +00:00
proletarius101
b4b4b20b4c feat(deploy): add index only mode in update_servergitmirrors 2024-02-28 08:02:35 +00:00
proletarius101
d814291577 style(deploy): remove unused imports 2024-02-28 08:02:35 +00:00
proletarius101
707b91e1eb style(deploy): fix pydocstyle errors 2024-02-28 08:02:35 +00:00
proletarius101
34395b0932 test(deploy): add test cases for update_awsbucket_libcloud and fix errors 2024-02-28 08:02:35 +00:00
proletarius101
aa99f27afb test(deploy): add test cases for update_awsbucket_s3cmd 2024-02-28 08:02:35 +00:00
proletarius101
a853d6027e fix(deploy): add test cases for local copy mode and fix issues 2024-02-28 08:02:35 +00:00
proletarius101
738d7dbf4e fix(deploy): add test cases for server webroot mode and fix issues 2024-02-28 08:02:35 +00:00
proletarius101
450b0d9a84 fix(deploy): restore accidentally removed code 2024-02-28 08:02:35 +00:00
proletarius101
7775aff1f2 fix(deploy): fix typo 2024-02-28 08:02:35 +00:00
proletarius101
aa54495388 test(deploy): properly test non-index-only mode 2024-02-28 08:02:35 +00:00
proletarius101
35952418a2 fix(deploy): fix typo 2024-02-28 08:02:35 +00:00
proletarius101
8e6996b25d feat(deploy): support the index-only option when syncing from/to local copies 2024-02-28 08:02:35 +00:00
proletarius101
86524ea56d feat(deploy): support index-only mode in libcloud 2024-02-28 08:02:35 +00:00
proletarius101
69a508e762 feat(deploy): support --index-only option for serverwebroot deployments 2024-02-28 08:02:35 +00:00
proletarius101
3eb51a1711 refactor: revert changes to the full sync mode for s3cmd 2024-02-28 08:02:35 +00:00
proletarius101
0021c76a44 feat(update_awsbucket_s3cmd): support the index-only flag 2024-02-28 08:02:35 +00:00
proletarius101
fb0041bdc1 feat: add --index-only flag 2024-02-28 08:02:35 +00:00
128 changed files with 1086 additions and 10868 deletions

View File

@ -76,13 +76,7 @@ metadata_v0:
'Dpkg::Use-Pty "0";' 'Dpkg::Use-Pty "0";'
'quiet "1";' 'quiet "1";'
>> /etc/apt/apt.conf.d/99gitlab >> /etc/apt/apt.conf.d/99gitlab
# Ubuntu and other distros often lack https:// support
- grep Debian /etc/issue.net
&& { find /etc/apt/sources.list* -type f | xargs sed -i s,http:,https:, ; }
- echo 'Acquire::https::Verify-Peer "false";' > /etc/apt/apt.conf.d/99nocacertificates
- apt-get update - apt-get update
- apt-get install ca-certificates
- rm /etc/apt/apt.conf.d/99nocacertificates
- apt-get dist-upgrade - apt-get dist-upgrade
@ -127,7 +121,7 @@ ubuntu_lts_ppa:
- export ANDROID_HOME=/usr/lib/android-sdk - export ANDROID_HOME=/usr/lib/android-sdk
- apt-get install gnupg - apt-get install gnupg
- while ! apt-key adv --keyserver keyserver.ubuntu.com --recv-key 9AAC253193B65D4DF1D0A13EEC4632C79C5E0151; do sleep 15; done - while ! apt-key adv --keyserver keyserver.ubuntu.com --recv-key 9AAC253193B65D4DF1D0A13EEC4632C79C5E0151; do sleep 15; done
- export RELEASE=$(sed -n 's,^Suites\x3a \([a-z]*\).*,\1,p' /etc/apt/sources.list.d/*.sources | head -1) - export RELEASE=`sed -n 's,^deb [^ ][^ ]* \([a-z]*\).*,\1,p' /etc/apt/sources.list | head -1`
- echo "deb http://ppa.launchpad.net/fdroid/fdroidserver/ubuntu $RELEASE main" >> /etc/apt/sources.list - echo "deb http://ppa.launchpad.net/fdroid/fdroidserver/ubuntu $RELEASE main" >> /etc/apt/sources.list
- apt-get update - apt-get update
- apt-get dist-upgrade - apt-get dist-upgrade
@ -199,7 +193,7 @@ arch_pip_install:
# The gradlew-fdroid tests are isolated from the rest of the test # The gradlew-fdroid tests are isolated from the rest of the test
# suite, so they run as their own job. # suite, so they run as their own job.
gradlew-fdroid: gradlew-fdroid:
image: debian:bookworm-slim image: debian:bullseye-slim
<<: *apt-template <<: *apt-template
only: only:
changes: changes:
@ -285,7 +279,9 @@ black:
- black --check --diff --color $CI_PROJECT_DIR - black --check --diff --color $CI_PROJECT_DIR
fedora_latest: fedora_latest:
image: fedora:39 # support ends on 2024-11-12 image: fedora:latest
only:
- master@fdroid/fdroidserver
script: script:
# tricks to hopefully make runs more reliable # tricks to hopefully make runs more reliable
- echo "timeout=600" >> /etc/dnf/dnf.conf - echo "timeout=600" >> /etc/dnf/dnf.conf
@ -362,14 +358,14 @@ macOS:
- /bin/bash -n gradlew-fdroid tests/run-tests - /bin/bash -n gradlew-fdroid tests/run-tests
# TODO remove the packages below once they are included in the Homebrew package # TODO remove the packages below once they are included in the Homebrew package
- $(brew --prefix fdroidserver)/libexec/bin/python3 -m pip install biplist oscrypto pycountry - $(brew --prefix fdroidserver)/libexec/bin/python3 -m pip install biplist pycountry
# test fdroidserver from git with current package's dependencies # test fdroidserver from git with current package's dependencies
- fdroid="$(brew --prefix fdroidserver)/libexec/bin/python3 $PWD/fdroid" ./tests/run-tests - fdroid="$(brew --prefix fdroidserver)/libexec/bin/python3 $PWD/fdroid" ./tests/run-tests
gradle: gradle:
image: debian:bookworm-slim image: debian:bullseye
<<: *apt-template <<: *apt-template
variables: variables:
GIT_DEPTH: 1000 GIT_DEPTH: 1000
@ -467,7 +463,7 @@ fdroid build:
# fdroiddata because that one is known to work, and this is a CI job, # fdroiddata because that one is known to work, and this is a CI job,
# so it should be isolated from the normal churn of fdroiddata. # so it should be isolated from the normal churn of fdroiddata.
plugin_fetchsrclibs: plugin_fetchsrclibs:
image: debian:bookworm-slim image: debian:bullseye
<<: *apt-template <<: *apt-template
only: only:
changes: changes:
@ -511,7 +507,7 @@ plugin_fetchsrclibs:
# test a full update and deploy cycle to gitlab.com # test a full update and deploy cycle to gitlab.com
servergitmirrors: servergitmirrors:
image: debian:bookworm-slim image: debian:bullseye-backports
<<: *apt-template <<: *apt-template
only: only:
- master@fdroid/fdroidserver - master@fdroid/fdroidserver
@ -532,7 +528,7 @@ servergitmirrors:
python3-venv python3-venv
rsync rsync
wget wget
- apt-get install apksigner - apt-get install -t bullseye-backports apksigner
- python3 -m venv --system-site-packages env - python3 -m venv --system-site-packages env
- . env/bin/activate - . env/bin/activate
- export PYTHONPATH=`pwd` - export PYTHONPATH=`pwd`
@ -555,7 +551,7 @@ servergitmirrors:
- diff repo/index-v1.jar index-v1.jar - diff repo/index-v1.jar index-v1.jar
Build documentation: Build documentation:
image: debian:bookworm-slim image: debian:bookworm
<<: *apt-template <<: *apt-template
script: script:
- apt-get install make python3-sphinx python3-numpydoc python3-pydata-sphinx-theme pydocstyle fdroidserver - apt-get install make python3-sphinx python3-numpydoc python3-pydata-sphinx-theme pydocstyle fdroidserver
@ -645,7 +641,7 @@ docker:
- buildserver/* - buildserver/*
variables: variables:
- $CI_COMMIT_BRANCH == "master" || $CI_PROJECT_NAMESPACE != "fdroid" - $CI_COMMIT_BRANCH == "master" || $CI_PROJECT_NAMESPACE != "fdroid"
image: docker:dind image: docker:git
services: services:
- docker:dind - docker:dind
variables: variables:
@ -656,7 +652,7 @@ docker:
- cd buildserver - cd buildserver
- docker build -t $TEST_IMAGE --build-arg GIT_REV_PARSE_HEAD=$(git rev-parse HEAD) . - docker build -t $TEST_IMAGE --build-arg GIT_REV_PARSE_HEAD=$(git rev-parse HEAD) .
- docker tag $TEST_IMAGE $RELEASE_IMAGE - docker tag $TEST_IMAGE $RELEASE_IMAGE
- docker tag $TEST_IMAGE ${RELEASE_IMAGE}-bookworm - docker tag $TEST_IMAGE ${RELEASE_IMAGE}-bullseye
- echo $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin registry.gitlab.com - echo $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin registry.gitlab.com
# This avoids filling up gitlab.com free tier accounts with unused docker images. # This avoids filling up gitlab.com free tier accounts with unused docker images.
- if test -z "$FDROID_PUSH_DOCKER_IMAGE"; then - if test -z "$FDROID_PUSH_DOCKER_IMAGE"; then
@ -666,4 +662,4 @@ docker:
exit 0; exit 0;
fi fi
- docker push $RELEASE_IMAGE - docker push $RELEASE_IMAGE
- docker push $RELEASE_IMAGE-bookworm - docker push $RELEASE_IMAGE-bullseye

View File

@ -20,6 +20,3 @@ security:
63687: 63687:
reason: Only affects Windows https://security-tracker.debian.org/tracker/CVE-2024-22190 reason: Only affects Windows https://security-tracker.debian.org/tracker/CVE-2024-22190
expires: '2026-01-31' expires: '2026-01-31'
67599:
reason: Only affects pip when using --extra-index-url, which is never the case in fdroidserver CI.
expires: '2026-05-31'

View File

@ -15,13 +15,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
* The `maven:` field is now always a string, with `yes` as a legacy special * The `maven:` field is now always a string, with `yes` as a legacy special
value. It is no longer treated like a boolean in any case. value. It is no longer treated like a boolean in any case.
## [2.2.2] - 2024-04-24
### Added
* Include sdkmanager as dep in setup.py for Homebrew package.
https://github.com/Homebrew/homebrew-core/pull/164510
## [2.2.1] - 2023-03-09 ## [2.2.1] - 2023-03-09
### Added ### Added

View File

@ -591,11 +591,6 @@ include tests/index.TestCase
include tests/init.TestCase include tests/init.TestCase
include tests/install.TestCase include tests/install.TestCase
include tests/IsMD5Disabled.java include tests/IsMD5Disabled.java
include tests/issue-1128-min-sdk-30-poc.apk
include tests/issue-1128-poc1.apk
include tests/issue-1128-poc2.apk
include tests/issue-1128-poc3a.apk
include tests/issue-1128-poc3b.apk
include tests/janus.apk include tests/janus.apk
include tests/keystore.jks include tests/keystore.jks
include tests/key-tricks.py include tests/key-tricks.py
@ -728,8 +723,6 @@ include tests/repo/urzip-*.apk
include tests/repo/v1.v2.sig_1020.apk include tests/repo/v1.v2.sig_1020.apk
include tests/rewritemeta.TestCase include tests/rewritemeta.TestCase
include tests/run-tests include tests/run-tests
include tests/SANAPPSI.RSA
include tests/SANAPPSI.SF
include tests/scanner.TestCase include tests/scanner.TestCase
include tests/signatures.TestCase include tests/signatures.TestCase
include tests/signindex.TestCase include tests/signindex.TestCase

View File

@ -1,5 +1,5 @@
FROM debian:bookworm FROM debian:bullseye
ENV LANG=C.UTF-8 \ ENV LANG=C.UTF-8 \
DEBIAN_FRONTEND=noninteractive DEBIAN_FRONTEND=noninteractive
@ -41,7 +41,7 @@ RUN printf "path-exclude=/usr/share/locale/*\npath-exclude=/usr/share/man/*\npat
&& mkdir -p /usr/share/man/man1 \ && mkdir -p /usr/share/man/man1 \
&& apt-get update \ && apt-get update \
&& apt-get install ca-certificates \ && apt-get install ca-certificates \
&& sed -i 's,http:,https:,' /etc/apt/sources.list.d/debian.sources \ && sed -i 's,http:,https:,' /etc/apt/sources.list \
&& apt-get upgrade \ && apt-get upgrade \
&& apt-get dist-upgrade \ && apt-get dist-upgrade \
&& apt-get install openssh-client iproute2 python3 openssh-server sudo \ && apt-get install openssh-client iproute2 python3 openssh-server sudo \

View File

@ -35,7 +35,7 @@ Vagrant.configure("2") do |config|
config.cache.enable :chef config.cache.enable :chef
end end
config.vm.box = "debian/bookworm64" config.vm.box = "fdroid/bullseye64"
if not configfile.has_key? "vm_provider" or configfile["vm_provider"] == "virtualbox" if not configfile.has_key? "vm_provider" or configfile["vm_provider"] == "virtualbox"
# default to VirtualBox if not set # default to VirtualBox if not set
@ -53,8 +53,6 @@ Vagrant.configure("2") do |config|
libvirt.uri = "qemu:///system" libvirt.uri = "qemu:///system"
libvirt.cpus = configfile["cpus"] libvirt.cpus = configfile["cpus"]
libvirt.memory = configfile["memory"] libvirt.memory = configfile["memory"]
# Debian Vagrant image is only 20G, so allocate more
libvirt.machine_virtual_size = 1024
if configfile.has_key? "libvirt_disk_bus" if configfile.has_key? "libvirt_disk_bus"
libvirt.disk_bus = configfile["libvirt_disk_bus"] libvirt.disk_bus = configfile["libvirt_disk_bus"]
end end
@ -88,12 +86,6 @@ Vagrant.configure("2") do |config|
# necessary with 9p synced folders # necessary with 9p synced folders
Dir.mkdir('cache') unless File.exists?('cache') Dir.mkdir('cache') unless File.exists?('cache')
# Root partition needs to be resized to the new allocated space
config.vm.provision "shell", inline: <<-SHELL
growpart -v -u auto /dev/vda 1
resize2fs /dev/vda1
SHELL
config.vm.provision "shell", name: "setup-env-vars", path: "setup-env-vars", config.vm.provision "shell", name: "setup-env-vars", path: "setup-env-vars",
args: ["/opt/android-sdk"] args: ["/opt/android-sdk"]
config.vm.provision "shell", name: "apt-get-install", path: "provision-apt-get-install", config.vm.provision "shell", name: "apt-get-install", path: "provision-apt-get-install",

View File

@ -39,29 +39,28 @@ if echo $debian_mirror | grep '^https' 2>&1 > /dev/null; then
fi fi
cat << EOF > /etc/apt/sources.list cat << EOF > /etc/apt/sources.list
deb ${debian_mirror} bookworm main deb ${debian_mirror} bullseye main
deb https://security.debian.org/debian-security bookworm-security main deb https://security.debian.org/debian-security bullseye-security main
deb ${debian_mirror} bookworm-updates main deb ${debian_mirror} bullseye-updates main
EOF EOF
echo "deb ${debian_mirror} bookworm-backports main" > /etc/apt/sources.list.d/backports.list echo "deb ${debian_mirror} bullseye-backports main" > /etc/apt/sources.list.d/backports.list
apt-get update || apt-get update apt-get update || apt-get update
# purge things that might come from the base box, but we don't want # purge things that might come from the base box, but we don't want
# https://salsa.debian.org/cloud-team/debian-vagrant-images/-/tree/master/config_space/package_config # https://salsa.debian.org/cloud-team/debian-vagrant-images/-/tree/master/config_space/package_config
# cat config_space/package_config/* | sort -u | grep -v '[A-Z#]' # cat config_space/package_config/* | sort -u | grep -v '[A-Z#]'
purge=" purge="
apt-listchanges apt-listchanges
apt-utils apt-utils
bash-completion bash-completion
bind9-* bind9-*
bsdextrautils bsdextrautils
build-essential
bzip2 bzip2
chrony chrony
cloud-utils cloud-utils
cron cron
cron-daemon-common
dbus dbus
debconf-i18n debconf-i18n
debian-faq debian-faq
@ -70,7 +69,6 @@ purge="
fdisk fdisk
file file
groff-base groff-base
inetutils-telnet
krb5-locales krb5-locales
less less
locales locales
@ -84,13 +82,14 @@ purge="
reportbug reportbug
rsyslog rsyslog
tasksel tasksel
telnet
traceroute traceroute
unattended-upgrades unattended-upgrades
usrmerge
vim-* vim-*
wamerican wamerican
wget wget
whiptail whiptail
xxd
xz-utils xz-utils
" "
# clean up files packages to be purged, then purge the packages # clean up files packages to be purged, then purge the packages
@ -107,7 +106,6 @@ packages="
apksigner apksigner
default-jdk-headless default-jdk-headless
default-jre-headless default-jre-headless
curl
dexdump dexdump
fdroidserver fdroidserver
git-svn git-svn
@ -116,9 +114,8 @@ packages="
patch patch
python3-packaging python3-packaging
rsync rsync
sdkmanager/bookworm-backports sdkmanager
sudo sudo
unzip
" "
apt-get install $packages --download-only apt-get install $packages --download-only

View File

@ -267,20 +267,10 @@
# sync_from_local_copy_dir: true # sync_from_local_copy_dir: true
# To upload the repo to an Amazon S3 bucket using `fdroid deploy' # To upload the repo to an Amazon S3 bucket using `fdroid server
# . rclone, s3cmd and apache libcloud are the available options. # update`. Warning, this deletes and recreates the whole fdroid/
# If rclone and s3cmd are not installed, apache libcloud is used. # directory each time. This prefers s3cmd, but can also use
# To use apache libcloud, add the following options to this file # apache-libcloud. To customize how s3cmd interacts with the cloud
# (config.yml)
#
# awsbucket: myawsfdroid
# awsaccesskeyid: SEE0CHAITHEIMAUR2USA
# awssecretkey: {env: awssecretkey}
#
# In case s3cmd is installed and rclone is not installed,
# s3cmd will be the preferred sync option.
# It will delete and recreate the whole fdroid directory each time.
# To customize how s3cmd interacts with the cloud
# provider, create a 's3cfg' file next to this file (config.yml), and # provider, create a 's3cfg' file next to this file (config.yml), and
# those settings will be used instead of any 'aws' variable below. # those settings will be used instead of any 'aws' variable below.
# Secrets can be fetched from environment variables to ensure that # Secrets can be fetched from environment variables to ensure that
@ -289,47 +279,6 @@
# awsbucket: myawsfdroid # awsbucket: myawsfdroid
# awsaccesskeyid: SEE0CHAITHEIMAUR2USA # awsaccesskeyid: SEE0CHAITHEIMAUR2USA
# awssecretkey: {env: awssecretkey} # awssecretkey: {env: awssecretkey}
#
# In case rclone is installed and s3cmd is not installed,
# rclone will be the preferred sync option.
# It will sync the local folders with remote folders without
# deleting anything in one go.
# To ensure success, install rclone as per
# the instructions at https://rclone.org/install/ and also configure for
# object storage services as detailed at https://rclone.org/s3/#configuration
# By default rclone uses the configuration file at ~/.config/rclone/rclone.conf
# To specify a custom configuration file, please add the full path to the
# configuration file as below
#
# path_to_custom_rclone_config: /home/mycomputer/somedir/example.conf
#
# This setting will ignore the default rclone config found at
# ~/.config/rclone/rclone.conf
#
# Please note that rclone_config can be assigned a string or list
#
# awsbucket: myawsfdroid
# rclone_config: aws-sample-config
#
# or
#
# awsbucket: myawsfdroid
# rclone_config: [aws-sample-config, rclone-supported-service-config]
#
# In case both rclone and s3cmd are installed, the preferred sync
# tool can be specified in this file (config.yml)
# if s3cmd is preferred, set it as below
#
# s3cmd: true
#
# if rclone is preferred, set it as below
#
# rclone: true
#
# Please note that only one can be set to true at any time
# Also, in the event that both s3cmd and rclone are installed
# and both are missing from the config.yml file, the preferred
# tool will be s3cmd.
# If you want to force 'fdroid server' to use a non-standard serverwebroot. # If you want to force 'fdroid server' to use a non-standard serverwebroot.

View File

@ -23,11 +23,12 @@ def main():
help=_("applicationId with optional versionCode in the form APPID[:VERCODE]"), help=_("applicationId with optional versionCode in the form APPID[:VERCODE]"),
) )
metadata.add_metadata_arguments(parser) metadata.add_metadata_arguments(parser)
options = common.parse_args(parser) options = parser.parse_args()
common.options = options
pkgs = common.read_pkg_args(options.appid, True) pkgs = common.read_pkg_args(options.appid, True)
allapps = metadata.read_metadata(pkgs) allapps = metadata.read_metadata(pkgs)
apps = common.read_app_args(options.appid, allapps, True) apps = common.read_app_args(options.appid, allapps, True)
common.read_config() common.read_config(options)
for appid, app in apps.items(): for appid, app in apps.items():
if "Builds" in app and len(app["Builds"]) > 0: if "Builds" in app and len(app["Builds"]) > 0:

View File

@ -25,8 +25,8 @@ def main():
global config global config
parser = ArgumentParser() parser = ArgumentParser()
common.setup_global_opts(parser) common.setup_global_opts(parser)
common.parse_args(parser) options = parser.parse_args()
config = common.read_config() config = common.read_config(options)
destkeystore = config['keystore'].replace('.jks', '.p12').replace('/', '_') destkeystore = config['keystore'].replace('.jks', '.p12').replace('/', '_')
exportkeystore = config['keystore'].replace('.jks', '.pem').replace('/', '_') exportkeystore = config['keystore'].replace('.jks', '.pem').replace('/', '_')
if os.path.exists(destkeystore) or os.path.exists(exportkeystore): if os.path.exists(destkeystore) or os.path.exists(exportkeystore):

View File

@ -14,8 +14,8 @@ fdroid_summary = 'export the keystore in standard PEM format'
def main(): def main():
parser = ArgumentParser() parser = ArgumentParser()
common.setup_global_opts(parser) common.setup_global_opts(parser)
common.parse_args(parser) options = parser.parse_args()
config = common.read_config() config = common.read_config(options)
env_vars = {'LC_ALL': 'C.UTF-8', env_vars = {'LC_ALL': 'C.UTF-8',
'FDROID_KEY_STORE_PASS': config['keystorepass'], 'FDROID_KEY_STORE_PASS': config['keystorepass'],
'FDROID_KEY_PASS': config['keypass']} 'FDROID_KEY_PASS': config['keypass']}

View File

@ -12,8 +12,8 @@ fdroid_summary = 'export the keystore in standard PEM format'
def main(): def main():
parser = ArgumentParser() parser = ArgumentParser()
common.setup_global_opts(parser) common.setup_global_opts(parser)
common.parse_args(parser) options = parser.parse_args()
common.read_config() common.config = common.read_config(options)
pubkey, repo_pubkey_fingerprint = index.extract_pubkey() pubkey, repo_pubkey_fingerprint = index.extract_pubkey()
print('repo_pubkey = "%s"' % pubkey.decode()) print('repo_pubkey = "%s"' % pubkey.decode())

View File

@ -18,11 +18,12 @@ def main():
common.setup_global_opts(parser) common.setup_global_opts(parser)
parser.add_argument("appid", nargs='*', help=_("applicationId with optional versionCode in the form APPID[:VERCODE]")) parser.add_argument("appid", nargs='*', help=_("applicationId with optional versionCode in the form APPID[:VERCODE]"))
metadata.add_metadata_arguments(parser) metadata.add_metadata_arguments(parser)
options = common.parse_args(parser) options = parser.parse_args()
common.options = options
pkgs = common.read_pkg_args(options.appid, True) pkgs = common.read_pkg_args(options.appid, True)
allapps = metadata.read_metadata(pkgs) allapps = metadata.read_metadata(pkgs)
apps = common.read_app_args(options.appid, allapps, True) apps = common.read_app_args(options.appid, allapps, True)
common.read_config() common.read_config(options)
srclib_dir = os.path.join('build', 'srclib') srclib_dir = os.path.join('build', 'srclib')
os.makedirs(srclib_dir, exist_ok=True) os.makedirs(srclib_dir, exist_ok=True)
srclibpaths = [] srclibpaths = []

View File

@ -11,8 +11,8 @@ fdroid_summary = 'import the local keystore into a SmartCard HSM'
def main(): def main():
parser = ArgumentParser() parser = ArgumentParser()
common.setup_global_opts(parser) common.setup_global_opts(parser)
common.parse_args(parser) options = parser.parse_args()
config = common.read_config() config = common.read_config(options)
env_vars = { env_vars = {
'LC_ALL': 'C.UTF-8', 'LC_ALL': 'C.UTF-8',
'FDROID_KEY_STORE_PASS': config['keystorepass'], 'FDROID_KEY_STORE_PASS': config['keystorepass'],

View File

@ -182,7 +182,7 @@ def main():
"can not be specified at the same time.")) "can not be specified at the same time."))
sys.exit(1) sys.exit(1)
# Trick argparse into displaying the right usage when --help is used. # Trick optparse into displaying the right usage when --help is used.
sys.argv[0] += ' ' + command sys.argv[0] += ' ' + command
del sys.argv[1] del sys.argv[1]

View File

@ -1,5 +1,4 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
"""Update the binary transparency log for a URL."""
# #
# btlog.py - part of the FDroid server tools # btlog.py - part of the FDroid server tools
# Copyright (C) 2017, Hans-Christoph Steiner <hans@eds.org> # Copyright (C) 2017, Hans-Christoph Steiner <hans@eds.org>
@ -27,6 +26,7 @@
# client app so its not easy for the server to distinguish this from # client app so its not easy for the server to distinguish this from
# the F-Droid client. # the F-Droid client.
import collections import collections
import defusedxml.minidom import defusedxml.minidom
import git import git
@ -39,7 +39,6 @@ import shutil
import tempfile import tempfile
import zipfile import zipfile
from argparse import ArgumentParser from argparse import ArgumentParser
from typing import Optional
from . import _ from . import _
from . import common from . import common
@ -47,31 +46,18 @@ from . import deploy
from .exception import FDroidException from .exception import FDroidException
options = None
def make_binary_transparency_log( def make_binary_transparency_log(
repodirs: collections.abc.Iterable, repodirs, btrepo='binary_transparency', url=None, commit_title='fdroid update'
btrepo: str = 'binary_transparency',
url: Optional[str] = None,
commit_title: str = 'fdroid update',
): ):
"""Log the indexes in a standalone git repo to serve as a "binary transparency" log. """Log the indexes in a standalone git repo to serve as a "binary transparency" log.
Parameters References
---------- ----------
repodirs https://www.eff.org/deeplinks/2014/02/open-letter-to-tech-companies
The directories of the F-Droid repository to generate the binary
transparency log for.
btrepo
The path to the Git repository of the binary transparency log.
url
The URL of the F-Droid repository to generate the binary transparency
log for.
commit_title
The commit title for commits in the binary transparency log Git
repository.
Notes
-----
Also see https://www.eff.org/deeplinks/2014/02/open-letter-to-tech-companies .
""" """
logging.info('Committing indexes to ' + btrepo) logging.info('Committing indexes to ' + btrepo)
if os.path.exists(os.path.join(btrepo, '.git')): if os.path.exists(os.path.join(btrepo, '.git')):
@ -163,17 +149,8 @@ For more info on this idea:
def main(): def main():
"""Generate or update a binary transparency log for a F-Droid repository. global options
The behaviour of this function is influenced by the configuration file as
well as command line parameters.
Raises
------
:exc:`~fdroidserver.exception.FDroidException`
If the specified or default Git repository does not exist.
"""
parser = ArgumentParser() parser = ArgumentParser()
common.setup_global_opts(parser) common.setup_global_opts(parser)
parser.add_argument( parser.add_argument(
@ -192,7 +169,7 @@ def main():
default=None, default=None,
help=_("Push the log to this git remote repository"), help=_("Push the log to this git remote repository"),
) )
options = common.parse_args(parser) options = parser.parse_args()
if options.verbose: if options.verbose:
logging.getLogger("requests").setLevel(logging.INFO) logging.getLogger("requests").setLevel(logging.INFO)

View File

@ -1,5 +1,4 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
"""Build a package from source."""
# #
# build.py - part of the FDroid server tools # build.py - part of the FDroid server tools
# Copyright (C) 2010-2014, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2010-2014, Ciaran Gultnieks, ciaran@ciarang.com
@ -60,30 +59,15 @@ def build_server(app, build, vcs, build_dir, output_dir, log_dir, force):
Parameters Parameters
---------- ----------
app app
The metadata of the app to build. app metadata dict
build build
The build of the app to build.
vcs vcs
The version control system controller object of the app. version control system controller object
build_dir build_dir
The local source-code checkout directory of the app. local source-code checkout of app
output_dir output_dir
The target folder for the build result. target folder for the build result
log_dir
The directory in the VM where the build logs are getting stored.
force force
Don't refresh the already cloned repository and make the build stop on
exceptions.
Raises
------
:exc:`~fdroidserver.exception.BuildException`
If Paramiko is not installed, a srclib directory or srclib metadata
file is unexpectedly missing, the build process in the VM failed or
output files of the build process are missing.
:exc:`~fdroidserver.exception.FDroidException`
If the Buildserver ID could not be obtained or copying a directory to
the server failed.
""" """
global buildserverid, ssh_channel global buildserverid, ssh_channel
@ -131,8 +115,8 @@ def build_server(app, build, vcs, build_dir, output_dir, log_dir, force):
# Put all the necessary files in place... # Put all the necessary files in place...
ftp.chdir(homedir) ftp.chdir(homedir)
# Helper to copy the contents of a directory to the server...
def send_dir(path): def send_dir(path):
"""Copy the contents of a directory to the server."""
logging.debug("rsyncing %s to %s" % (path, ftp.getcwd())) logging.debug("rsyncing %s to %s" % (path, ftp.getcwd()))
# TODO this should move to `vagrant rsync` from >= v1.5 # TODO this should move to `vagrant rsync` from >= v1.5
try: try:
@ -332,15 +316,6 @@ def build_server(app, build, vcs, build_dir, output_dir, log_dir, force):
def force_gradle_build_tools(build_dir, build_tools): def force_gradle_build_tools(build_dir, build_tools):
"""Manipulate build tools version used in top level gradle file.
Parameters
----------
build_dir
The directory to start looking for gradle files.
build_tools
The build tools version that should be forced to use.
"""
for root, dirs, files in os.walk(build_dir): for root, dirs, files in os.walk(build_dir):
for filename in files: for filename in files:
if not filename.endswith('.gradle'): if not filename.endswith('.gradle'):
@ -367,31 +342,6 @@ def get_metadata_from_apk(app, build, apkfile):
"""Get the required metadata from the built APK. """Get the required metadata from the built APK.
VersionName is allowed to be a blank string, i.e. '' VersionName is allowed to be a blank string, i.e. ''
Parameters
----------
app
The app metadata used to build the APK.
build
The build that resulted in the APK.
apkfile
The path of the APK file.
Returns
-------
versionCode
The versionCode from the APK or from the metadata is build.novcheck is
set.
versionName
The versionName from the APK or from the metadata is build.novcheck is
set.
Raises
------
:exc:`~fdroidserver.exception.BuildException`
If native code should have been built but was not packaged, no version
information or no package ID could be found or there is a mismatch
between the package ID in the metadata and the one found in the APK.
""" """
appid, versionCode, versionName = common.get_apk_id(apkfile) appid, versionCode, versionName = common.get_apk_id(apkfile)
native_code = common.get_native_code(apkfile) native_code = common.get_native_code(apkfile)
@ -412,56 +362,7 @@ def get_metadata_from_apk(app, build, apkfile):
def build_local(app, build, vcs, build_dir, output_dir, log_dir, srclib_dir, extlib_dir, tmp_dir, force, onserver, refresh): def build_local(app, build, vcs, build_dir, output_dir, log_dir, srclib_dir, extlib_dir, tmp_dir, force, onserver, refresh):
"""Do a build locally. """Do a build locally."""
Parameters
----------
app
The metadata of the app to build.
build
The build of the app to build.
vcs
The version control system controller object of the app.
build_dir
The local source-code checkout directory of the app.
output_dir
The target folder for the build result.
log_dir
The directory in the VM where the build logs are getting stored.
srclib_dir
The path to the srclibs directory, usually 'build/srclib'.
extlib_dir
The path to the extlibs directory, usually 'build/extlib'.
tmp_dir
The temporary directory for building the source tarball.
force
Don't refresh the already cloned repository and make the build stop on
exceptions.
onserver
Assume the build is happening inside the VM.
refresh
Enable fetching the latest refs from the VCS remote.
Raises
------
:exc:`~fdroidserver.exception.BuildException`
If running a `sudo` command failed, locking the root account failed,
`sudo` couldn't be removed, cleaning the build environment failed,
skipping the scanning has been requested but `scandelete` is present,
errors occurred during scanning, running the `build` commands from the
metadata failed, building native code failed, building with the
specified build method failed, no output could be found with build
method `maven`, more or less than one APK were found with build method
`gradle`, less or more than one APKs match the `output` glob specified
in the metadata, running a `postbuild` command specified in the
metadata failed, the built APK is debuggable, the unsigned APK is not
at the expected location, the APK does not contain the expected
`versionName` and `versionCode` or undesired package names have been
found in the APK.
:exc:`~fdroidserver.exception.FDroidException`
If no Android NDK version could be found and the build isn't run in a
builder VM, the selected Android NDK is not a directory.
"""
ndk_path = build.ndk_path() ndk_path = build.ndk_path()
if build.ndk or (build.buildjni and build.buildjni != ['no']): if build.ndk or (build.buildjni and build.buildjni != ['no']):
if not ndk_path: if not ndk_path:
@ -819,10 +720,8 @@ def build_local(app, build, vcs, build_dir, output_dir, log_dir, srclib_dir, ext
f"{app.id}:{build.versionName}", p.output) f"{app.id}:{build.versionName}", p.output)
# Make sure it's not debuggable... # Make sure it's not debuggable...
if common.is_debuggable_or_testOnly(src): if common.is_apk_and_debuggable(src):
raise BuildException( raise BuildException("APK is debuggable")
"%s: debuggable or testOnly set in AndroidManifest.xml" % src
)
# By way of a sanity check, make sure the version and version # By way of a sanity check, make sure the version and version
# code in our new APK match what we expect... # code in our new APK match what we expect...
@ -865,47 +764,23 @@ def trybuild(app, build, build_dir, output_dir, log_dir, also_check_dir,
Parameters Parameters
---------- ----------
app
The metadata of the app to build.
build
The build of the app to build.
build_dir
The local source-code checkout directory of the app.
output_dir output_dir
The directory where the build output will go. Usually this is the The directory where the build output will go.
'unsigned' directory. Usually this is the 'unsigned' directory.
log_dir
The directory in the VM where the build logs are getting stored.
also_check_dir
An additional location for checking if the build is necessary (usually
the archive repo).
srclib_dir
The path to the srclibs directory, usually 'build/srclib'.
extlib_dir
The path to the extlibs directory, usually 'build/extlib'.
tmp_dir
The temporary directory for building the source tarball of the app to
build.
repo_dir repo_dir
The repo directory - used for checking if the build is necessary. The repo directory - used for checking if the build is necessary.
vcs also_check_dir
The version control system controller object of the app to build. An additional location for checking if the build
is necessary (usually the archive repo)
test test
True if building in test mode, in which case the build will always True if building in test mode, in which case the build will
happen, even if the output already exists. In test mode, the output always happen, even if the output already exists. In test mode, the
directory should be a temporary location, not any of the real ones. output directory should be a temporary location, not any of the real
server ones.
Use buildserver VM for building.
force
Build app regardless of disabled state or scanner errors.
onserver
Assume the build is happening inside the VM.
refresh
Enable fetching the latest refs from the VCS remote.
Returns Returns
------- -------
status Boolean
True if the build was done, False if it wasn't necessary. True if the build was done, False if it wasn't necessary.
""" """
dest_file = common.get_release_filename(app, build) dest_file = common.get_release_filename(app, build)
@ -944,13 +819,7 @@ def trybuild(app, build, build_dir, output_dir, log_dir, also_check_dir,
def force_halt_build(timeout): def force_halt_build(timeout):
"""Halt the currently running Vagrant VM, to be called from a Timer. """Halt the currently running Vagrant VM, to be called from a Timer."""
Parameters
----------
timeout
The timeout in seconds.
"""
logging.error(_('Force halting build after {0} sec timeout!').format(timeout)) logging.error(_('Force halting build after {0} sec timeout!').format(timeout))
timeout_event.set() timeout_event.set()
if ssh_channel: if ssh_channel:
@ -974,9 +843,7 @@ def parse_commandline():
Returns Returns
------- -------
options options
The resulting options parsed from the command line arguments.
parser parser
The argument parser.
""" """
parser = argparse.ArgumentParser(usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]") parser = argparse.ArgumentParser(usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]")
common.setup_global_opts(parser) common.setup_global_opts(parser)
@ -1014,7 +881,7 @@ def parse_commandline():
parser.add_argument("-w", "--wiki", default=False, action="store_true", parser.add_argument("-w", "--wiki", default=False, action="store_true",
help=argparse.SUPPRESS) help=argparse.SUPPRESS)
metadata.add_metadata_arguments(parser) metadata.add_metadata_arguments(parser)
options = common.parse_args(parser) options = parser.parse_args()
metadata.warnings_action = options.W metadata.warnings_action = options.W
# Force --stop with --on-server to get correct exit code # Force --stop with --on-server to get correct exit code
@ -1036,22 +903,6 @@ timeout_event = threading.Event()
def main(): def main():
"""Build a package from source.
The behaviour of this function is influenced by the configuration file as
well as command line parameters.
Raises
------
:exc:`~fdroidserver.exception.FDroidException`
If more than one local metadata file has been found, no app metadata
has been found, there are no apps to process, downloading binaries for
checking the reproducibility of a built binary failed, the built binary
is different from supplied reference binary, the reference binary is
signed with a different signing key than expected, a VCS error occured
while building an app or a different error occured while building an
app.
"""
global options, config, buildserverid, fdroidserverid global options, config, buildserverid, fdroidserverid
options, parser = parse_commandline() options, parser = parse_commandline()
@ -1076,7 +927,7 @@ def main():
if not options.appid and not options.all: if not options.appid and not options.all:
parser.error("option %s: If you really want to build all the apps, use --all" % "all") parser.error("option %s: If you really want to build all the apps, use --all" % "all")
config = common.read_config() config = common.read_config(opts=options)
if config['build_server_always']: if config['build_server_always']:
options.server = True options.server = True

View File

@ -1,5 +1,4 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
"""Check for updates to applications."""
# #
# checkupdates.py - part of the FDroid server tools # checkupdates.py - part of the FDroid server tools
# Copyright (C) 2010-2015, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2010-2015, Ciaran Gultnieks, ciaran@ciarang.com
@ -506,7 +505,7 @@ def operate_vercode(operation: str, vercode: int) -> int:
return vercode return vercode
def checkupdates_app(app: metadata.App, auto: bool, commit: bool = False) -> None: def checkupdates_app(app: metadata.App) -> None:
"""Check for new versions and updated name of a single app. """Check for new versions and updated name of a single app.
Also write back changes to the metadata file and create a Git commit if Also write back changes to the metadata file and create a Git commit if
@ -582,7 +581,7 @@ def checkupdates_app(app: metadata.App, auto: bool, commit: bool = False) -> Non
logging.info('...updating to version %s' % ver) logging.info('...updating to version %s' % ver)
commitmsg = 'Update CurrentVersion of %s to %s' % (name, ver) commitmsg = 'Update CurrentVersion of %s to %s' % (name, ver)
if auto: if options.auto:
mode = app.AutoUpdateMode mode = app.AutoUpdateMode
if not app.CurrentVersionCode: if not app.CurrentVersionCode:
raise MetaDataException( raise MetaDataException(
@ -618,24 +617,19 @@ def checkupdates_app(app: metadata.App, auto: bool, commit: bool = False) -> Non
if not gotcur: if not gotcur:
newbuilds = copy.deepcopy(builds[-len(vercodes):]) newbuilds = copy.deepcopy(builds[-len(vercodes):])
# These are either built-in or invalid in newer system versions bullseye_blocklist = [
bookworm_blocklist = [
'apt-get install -y openjdk-11-jdk', 'apt-get install -y openjdk-11-jdk',
'apt-get install openjdk-11-jdk-headless', 'apt-get install openjdk-11-jdk-headless',
'apt-get install -y openjdk-11-jdk-headless', 'apt-get install -y openjdk-11-jdk-headless',
'apt-get install -t stretch-backports openjdk-11-jdk-headless openjdk-11-jre-headless', 'apt-get install -t stretch-backports openjdk-11-jdk-headless openjdk-11-jre-headless',
'apt-get install -y -t stretch-backports openjdk-11-jdk-headless openjdk-11-jre-headless', 'apt-get install -y -t stretch-backports openjdk-11-jdk-headless openjdk-11-jre-headless',
'apt-get install -y openjdk-17-jdk',
'apt-get install openjdk-17-jdk-headless',
'apt-get install -y openjdk-17-jdk-headless',
'update-alternatives --auto java', 'update-alternatives --auto java',
'update-java-alternatives -a',
] ]
for build in newbuilds: for build in newbuilds:
if "sudo" in build: if "sudo" in build:
if any("openjdk-11" in line for line in build["sudo"]) or any("openjdk-17" in line for line in build["sudo"]): if any("openjdk-11" in line for line in build["sudo"]):
build["sudo"] = [line for line in build["sudo"] if line not in bookworm_blocklist] build["sudo"] = [line for line in build["sudo"] if line not in bullseye_blocklist]
if build["sudo"] == ['apt-get update']: if build["sudo"] == ['apt-get update']:
build["sudo"] = '' build["sudo"] = ''
@ -665,7 +659,7 @@ def checkupdates_app(app: metadata.App, auto: bool, commit: bool = False) -> Non
if commitmsg: if commitmsg:
metadata.write_metadata(app.metadatapath, app) metadata.write_metadata(app.metadatapath, app)
if commit: if options.commit:
logging.info("Commiting update for " + app.metadatapath) logging.info("Commiting update for " + app.metadatapath)
gitcmd = ["git", "commit", "-m", commitmsg] gitcmd = ["git", "commit", "-m", commitmsg]
if 'auto_author' in config: if 'auto_author' in config:
@ -695,6 +689,7 @@ def status_update_json(processed: list, failed: dict) -> None:
config = None config = None
options = None
start_timestamp = time.gmtime() start_timestamp = time.gmtime()
@ -704,7 +699,7 @@ def main():
The behaviour of this function is influenced by the configuration file as The behaviour of this function is influenced by the configuration file as
well as command line parameters. well as command line parameters.
""" """
global config global config, options
# Parse command line... # Parse command line...
parser = ArgumentParser() parser = ArgumentParser()
@ -719,10 +714,10 @@ def main():
parser.add_argument("--allow-dirty", action="store_true", default=False, parser.add_argument("--allow-dirty", action="store_true", default=False,
help=_("Run on git repo that has uncommitted changes")) help=_("Run on git repo that has uncommitted changes"))
metadata.add_metadata_arguments(parser) metadata.add_metadata_arguments(parser)
options = common.parse_args(parser) options = parser.parse_args()
metadata.warnings_action = options.W metadata.warnings_action = options.W
config = common.read_config() config = common.read_config(options)
if not options.allow_dirty: if not options.allow_dirty:
status = subprocess.check_output(['git', 'status', '--porcelain']) status = subprocess.check_output(['git', 'status', '--porcelain'])
@ -748,7 +743,7 @@ def main():
logging.info(msg) logging.info(msg)
try: try:
checkupdates_app(app, options.auto, options.commit) checkupdates_app(app)
processed.append(appid) processed.append(appid)
except Exception as e: except Exception as e:
msg = _("...checkupdate failed for {appid} : {error}").format(appid=appid, error=e) msg = _("...checkupdate failed for {appid} : {error}").format(appid=appid, error=e)

View File

@ -55,13 +55,16 @@ from pathlib import Path
import defusedxml.ElementTree as XMLElementTree import defusedxml.ElementTree as XMLElementTree
from asn1crypto import cms
from base64 import urlsafe_b64encode from base64 import urlsafe_b64encode
from binascii import hexlify from binascii import hexlify
from datetime import datetime, timedelta, timezone from datetime import datetime, timedelta, timezone
from queue import Queue from queue import Queue
from zipfile import ZipFile from zipfile import ZipFile
from pyasn1.codec.der import decoder, encoder
from pyasn1_modules import rfc2315
from pyasn1.error import PyAsn1Error
import fdroidserver.metadata import fdroidserver.metadata
import fdroidserver.lint import fdroidserver.lint
from fdroidserver import _ from fdroidserver import _
@ -132,27 +135,11 @@ env = None
orig_path = None orig_path = None
def get_default_cachedir():
"""Get a cachedir, using appdirs for cross-platform, but works without.
Once appdirs is installed everywhere, this function can be
removed.
"""
appname = __name__.split('.')[0]
try:
import appdirs
return appdirs.user_cache_dir(appname, 'F-Droid')
except ImportError:
return str(Path.home() / '.cache' / appname)
# All paths in the config must be strings, never pathlib.Path instances # All paths in the config must be strings, never pathlib.Path instances
default_config = { default_config = {
'sdk_path': "$ANDROID_HOME", 'sdk_path': "$ANDROID_HOME",
'ndk_paths': {}, 'ndk_paths': {},
'cachedir': get_default_cachedir(), 'cachedir': str(Path.home() / '.cache/fdroidserver'),
'java_paths': None, 'java_paths': None,
'scan_binary': False, 'scan_binary': False,
'ant': "ant", 'ant': "ant",
@ -192,34 +179,6 @@ default_config = {
} }
def get_options():
"""Return options as set up by parse_args().
This provides an easy way to get the global instance without
having to think about very confusing import and submodule
visibility. The code should be probably refactored so it does not
need this. If each individual option value was always passed to
functions as args, for example.
https://docs.python.org/3/reference/import.html#submodules
"""
return fdroidserver.common.options
def parse_args(parser):
"""Call parser.parse_args(), store result in module-level variable and return it.
This is needed to set up the copy of the options instance in the
fdroidserver.common module. A subcommand only needs to call this
if it uses functions from fdroidserver.common that expect the
"options" variable to be initialized.
"""
fdroidserver.common.options = parser.parse_args()
return fdroidserver.common.options
def setup_global_opts(parser): def setup_global_opts(parser):
try: # the buildserver VM might not have PIL installed try: # the buildserver VM might not have PIL installed
from PIL import PngImagePlugin from PIL import PngImagePlugin
@ -234,31 +193,6 @@ def setup_global_opts(parser):
help=_("Restrict output to warnings and errors")) help=_("Restrict output to warnings and errors"))
def set_console_logging(verbose=False):
"""Globally set logging to output nicely to the console."""
class _StdOutFilter(logging.Filter):
def filter(self, record):
return record.levelno < logging.ERROR
if verbose:
level = logging.DEBUG
else:
level = logging.ERROR
stdout_handler = logging.StreamHandler(sys.stdout)
stdout_handler.addFilter(_StdOutFilter())
stdout_handler.setFormatter(logging.Formatter('%(message)s'))
stderr_handler = logging.StreamHandler(sys.stderr)
stderr_handler.setLevel(logging.ERROR)
stderr_handler.setFormatter(logging.Formatter(_('ERROR: %(message)s')))
logging.basicConfig(
force=True, level=level, handlers=[stdout_handler, stderr_handler]
)
def _add_java_paths_to_config(pathlist, thisconfig): def _add_java_paths_to_config(pathlist, thisconfig):
def path_version_key(s): def path_version_key(s):
versionlist = [] versionlist = []
@ -402,38 +336,20 @@ def fill_config_defaults(thisconfig):
thisconfig['gradle_version_dir'] = str(Path(thisconfig['cachedir']) / 'gradle') thisconfig['gradle_version_dir'] = str(Path(thisconfig['cachedir']) / 'gradle')
def get_config(): def get_config(opts=None):
"""Get the initalized, singleton config instance. """Get config instace. This function takes care of initializing config data before returning it."""
global config, options
config and options are intertwined in read_config(), so they have
to be here too. In the current ugly state of things, there are
multiple potential instances of config and options in use:
* global
* module-level in the subcommand module (e.g. fdroidserver/build.py)
* module-level in fdroidserver.common
There are some insane parts of the code that are probably
referring to multiple instances of these at different points.
This can be super confusing and maddening.
The current intermediate refactoring step is to move all
subcommands to always get/set config and options via this function
so that there is no longer a distinction between the global and
module-level instances. Then there can be only one module-level
instance in fdroidserver.common.
"""
global config
if config is not None: if config is not None:
return config return config
read_config() common.read_config(opts=opts)
# make sure these values are available in common.py even if they didn't # make sure these values are available in common.py even if they didn't
# declare global in a scope # declare global in a scope
common.config = config common.config = config
if opts is not None:
common.options = opts
return config return config
@ -466,7 +382,7 @@ def config_type_check(path, data):
) )
def read_config(): def read_config(opts=None):
"""Read the repository config. """Read the repository config.
The config is read from config_file, which is in the current The config is read from config_file, which is in the current
@ -485,11 +401,13 @@ def read_config():
in git, it makes sense to use a globally standard encoding. in git, it makes sense to use a globally standard encoding.
""" """
global config global config, options
if config is not None: if config is not None:
return config return config
options = opts
config = {} config = {}
config_file = 'config.yml' config_file = 'config.yml'
old_config_file = 'config.py' old_config_file = 'config.py'
@ -522,8 +440,8 @@ def read_config():
# smartcardoptions must be a list since its command line args for Popen # smartcardoptions must be a list since its command line args for Popen
smartcardoptions = config.get('smartcardoptions') smartcardoptions = config.get('smartcardoptions')
if isinstance(smartcardoptions, str): if isinstance(smartcardoptions, str):
sco_items = re.sub(r'\s+', r' ', config['smartcardoptions']).split(' ') options = re.sub(r'\s+', r' ', config['smartcardoptions']).split(' ')
config['smartcardoptions'] = [i.strip() for i in sco_items if i] config['smartcardoptions'] = [i.strip() for i in options if i]
elif not smartcardoptions and 'keystore' in config and config['keystore'] == 'NONE': elif not smartcardoptions and 'keystore' in config and config['keystore'] == 'NONE':
# keystore='NONE' means use smartcard, these are required defaults # keystore='NONE' means use smartcard, these are required defaults
config['smartcardoptions'] = ['-storetype', 'PKCS11', '-providerName', config['smartcardoptions'] = ['-storetype', 'PKCS11', '-providerName',
@ -544,7 +462,14 @@ def read_config():
fill_config_defaults(config) fill_config_defaults(config)
if 'serverwebroot' in config: if 'serverwebroot' in config:
roots = parse_mirrors_config(config['serverwebroot']) if isinstance(config['serverwebroot'], str):
roots = [{'url': config['serverwebroot']}]
elif all(isinstance(item, str) for item in config['serverwebroot']):
roots = [{'url': i} for i in config['serverwebroot']]
elif all(isinstance(item, dict) for item in config['serverwebroot']):
roots = config['serverwebroot']
else:
raise TypeError(_('only accepts strings, lists, and tuples'))
rootlist = [] rootlist = []
for d in roots: for d in roots:
# since this is used with rsync, where trailing slashes have # since this is used with rsync, where trailing slashes have
@ -557,7 +482,15 @@ def read_config():
config['serverwebroot'] = rootlist config['serverwebroot'] = rootlist
if 'servergitmirrors' in config: if 'servergitmirrors' in config:
config['servergitmirrors'] = parse_mirrors_config(config['servergitmirrors']) if isinstance(config['servergitmirrors'], str):
roots = [{"url": config['servergitmirrors']}]
elif all(isinstance(item, str) for item in config['servergitmirrors']):
roots = [{'url': i} for i in config['servergitmirrors']]
elif all(isinstance(item, dict) for item in config['servergitmirrors']):
roots = config['servergitmirrors']
else:
raise TypeError(_('only accepts strings, lists, and tuples'))
config['servergitmirrors'] = roots
limit = config['git_mirror_size_limit'] limit = config['git_mirror_size_limit']
config['git_mirror_size_limit'] = parse_human_readable_size(limit) config['git_mirror_size_limit'] = parse_human_readable_size(limit)
@ -600,22 +533,10 @@ def read_config():
return config return config
def parse_mirrors_config(mirrors):
"""Mirrors can be specified as a string, list of strings, or dictionary map."""
if isinstance(mirrors, str):
return [{"url": mirrors}]
elif all(isinstance(item, str) for item in mirrors):
return [{'url': i} for i in mirrors]
elif all(isinstance(item, dict) for item in mirrors):
return mirrors
else:
raise TypeError(_('only accepts strings, lists, and tuples'))
def file_entry(filename, hash_value=None): def file_entry(filename, hash_value=None):
meta = {} meta = {}
meta["name"] = "/" + Path(filename).as_posix().split("/", 1)[1] meta["name"] = "/" + filename.split("/", 1)[1]
meta["sha256"] = hash_value or sha256sum(filename) meta["sha256"] = hash_value or common.sha256sum(filename)
meta["size"] = os.stat(filename).st_size meta["size"] = os.stat(filename).st_size
return meta return meta
@ -2396,8 +2317,6 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver=
gradlefile = build_gradle gradlefile = build_gradle
elif os.path.exists(build_gradle_kts): elif os.path.exists(build_gradle_kts):
gradlefile = build_gradle_kts gradlefile = build_gradle_kts
else:
raise BuildException("No gradle file found")
regsub_file(r'compileSdkVersion[ =]+[0-9]+', regsub_file(r'compileSdkVersion[ =]+[0-9]+',
r'compileSdkVersion %s' % n, r'compileSdkVersion %s' % n,
gradlefile) gradlefile)
@ -2673,48 +2592,31 @@ def get_file_extension(filename):
return os.path.splitext(filename)[1].lower()[1:] return os.path.splitext(filename)[1].lower()[1:]
def _androguard_logging_level(level=logging.ERROR): def use_androguard():
"""Tames androguard's default debug output. """Report if androguard is available, and config its debug logging."""
There should be no debug output when the functions are being used
via the API. Otherwise, the output is controlled by the --verbose
flag.
To get coverage across the full range of androguard >= 3.3.5, this
includes all known logger names that are relevant. So some of
these names might not be present in the version of androguard
currently in use.
"""
if options and options.verbose:
level = logging.WARNING
for name in (
'androguard.apk',
'androguard.axml',
'androguard.core.api_specific_resources',
'androguard.core.apk',
'androguard.core.axml',
):
logging.getLogger(name).setLevel(level)
# some parts of androguard 4.x use loguru instead of logging
try: try:
from loguru import logger import androguard
logger.remove() if use_androguard.show_path:
logging.debug(_('Using androguard from "{path}"').format(path=androguard.__file__))
use_androguard.show_path = False
if options and options.verbose:
logging.getLogger("androguard.axml").setLevel(logging.INFO)
logging.getLogger("androguard.core.api_specific_resources").setLevel(logging.ERROR)
return True
except ImportError: except ImportError:
pass return False
def get_androguard_APK(apkfile, skip_analysis=False): use_androguard.show_path = True # type: ignore
def _get_androguard_APK(apkfile):
try: try:
# these were moved in androguard 4.0
from androguard.core.apk import APK
except ImportError:
from androguard.core.bytecodes.apk import APK from androguard.core.bytecodes.apk import APK
_androguard_logging_level() except ImportError as exc:
raise FDroidException("androguard library is not installed") from exc
return APK(apkfile, skip_analysis=skip_analysis) return APK(apkfile)
def ensure_final_value(packageName, arsc, value): def ensure_final_value(packageName, arsc, value):
@ -2738,13 +2640,10 @@ def ensure_final_value(packageName, arsc, value):
return '' return ''
def is_debuggable_or_testOnly(apkfile): def is_apk_and_debuggable(apkfile):
"""Return True if the given file is an APK and is debuggable or testOnly. """Return True if the given file is an APK and is debuggable.
These two settings should never be enabled in release builds. This Parse only <application android:debuggable=""> from the APK.
parses <application android:debuggable="" android:testOnly="">
from the APK and nothing else to run fast, since it is run on
every APK as part of update.
Parameters Parameters
---------- ----------
@ -2754,13 +2653,7 @@ def is_debuggable_or_testOnly(apkfile):
""" """
if get_file_extension(apkfile) != 'apk': if get_file_extension(apkfile) != 'apk':
return False return False
try: from androguard.core.bytecodes.axml import AXMLParser, format_value, START_TAG
# these were moved in androguard 4.0
from androguard.core.axml import AXMLParser, format_value, START_TAG
except ImportError:
from androguard.core.bytecodes.axml import AXMLParser, format_value, START_TAG
_androguard_logging_level()
with ZipFile(apkfile) as apk: with ZipFile(apkfile) as apk:
with apk.open('AndroidManifest.xml') as manifest: with apk.open('AndroidManifest.xml') as manifest:
axml = AXMLParser(manifest.read()) axml = AXMLParser(manifest.read())
@ -2769,7 +2662,7 @@ def is_debuggable_or_testOnly(apkfile):
if _type == START_TAG and axml.getName() == 'application': if _type == START_TAG and axml.getName() == 'application':
for i in range(0, axml.getAttributeCount()): for i in range(0, axml.getAttributeCount()):
name = axml.getAttributeName(i) name = axml.getAttributeName(i)
if name in ('debuggable', 'testOnly'): if name == 'debuggable':
_type = axml.getAttributeValueType(i) _type = axml.getAttributeValueType(i)
_data = axml.getAttributeValueData(i) _data = axml.getAttributeValueData(i)
value = format_value(_type, _data, lambda _: axml.getAttributeValue(i)) value = format_value(_type, _data, lambda _: axml.getAttributeValue(i))
@ -2820,20 +2713,12 @@ def get_apk_id_androguard(apkfile):
versionName is set to a Android String Resource (e.g. an integer versionName is set to a Android String Resource (e.g. an integer
hex value that starts with @). hex value that starts with @).
This function is part of androguard as get_apkid(), so this
vendored and modified to return versionCode as an integer.
""" """
if not os.path.exists(apkfile): if not os.path.exists(apkfile):
raise FDroidException(_("Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'") raise FDroidException(_("Reading packageName/versionCode/versionName failed, APK invalid: '{apkfilename}'")
.format(apkfilename=apkfile)) .format(apkfilename=apkfile))
try: from androguard.core.bytecodes.axml import AXMLParser, format_value, START_TAG, END_TAG, TEXT, END_DOCUMENT
# these were moved in androguard 4.0
from androguard.core.axml import AXMLParser, format_value, START_TAG, END_TAG, TEXT, END_DOCUMENT
except ImportError:
from androguard.core.bytecodes.axml import AXMLParser, format_value, START_TAG, END_TAG, TEXT, END_DOCUMENT
_androguard_logging_level()
appid = None appid = None
versionCode = None versionCode = None
@ -2868,7 +2753,7 @@ def get_apk_id_androguard(apkfile):
.format(path=apkfile)) .format(path=apkfile))
if not versionName or versionName[0] == '@': if not versionName or versionName[0] == '@':
a = get_androguard_APK(apkfile) a = _get_androguard_APK(apkfile)
versionName = ensure_final_value(a.package, a.get_android_resources(), a.get_androidversion_name()) versionName = ensure_final_value(a.package, a.get_android_resources(), a.get_androidversion_name())
if not versionName: if not versionName:
versionName = '' # versionName is expected to always be a str versionName = '' # versionName is expected to always be a str
@ -3206,7 +3091,10 @@ def signer_fingerprint_short(cert_encoded):
def signer_fingerprint(cert_encoded): def signer_fingerprint(cert_encoded):
"""Return SHA-256 signer fingerprint for PKCS#7 DER-encoded signature. """Obtain sha256 signing-key fingerprint for pkcs7 DER certificate.
Extracts hexadecimal sha256 signing-key fingerprint string
for a given pkcs7 signature.
Parameters Parameters
---------- ----------
@ -3214,113 +3102,46 @@ def signer_fingerprint(cert_encoded):
Returns Returns
------- -------
Standard SHA-256 signer fingerprint. shortened signature fingerprint.
""" """
return hashlib.sha256(cert_encoded).hexdigest() return hashlib.sha256(cert_encoded).hexdigest()
def get_first_signer_certificate(apkpath): def get_first_signer_certificate(apkpath):
"""Get the first signing certificate from the APK, DER-encoded. """Get the first signing certificate from the APK, DER-encoded."""
certs = None
JAR and APK Signatures allow for multiple signers, though it is
rarely used, and this is poorly documented. So this method only
fetches the first certificate, and errors out if there are more.
Starting with targetSdkVersion 30, APK v2 Signatures are required.
https://developer.android.com/about/versions/11/behavior-changes-11#minimum-signature-scheme
When a APK v2+ signature is present, the JAR signature is not
verified. The verifier parses the signers from the v2+ signature
and does not seem to look at the JAR signature.
https://source.android.com/docs/security/features/apksigning/v2#apk-signature-scheme-v2-block
https://android.googlesource.com/platform/tools/apksig/+/refs/tags/android-13.0.0_r3/src/main/java/com/android/apksig/ApkVerifier.java#270
apksigner checks that the signers from all the APK signatures match:
https://android.googlesource.com/platform/tools/apksig/+/refs/tags/android-13.0.0_r3/src/main/java/com/android/apksig/ApkVerifier.java#383
apksigner verifies each signer's signature block file
.(RSA|DSA|EC) against the corresponding signature file .SF
https://android.googlesource.com/platform/tools/apksig/+/refs/tags/android-13.0.0_r3/src/main/java/com/android/apksig/internal/apk/v1/V1SchemeVerifier.java#280
NoOverwriteDict is a workaround for:
https://github.com/androguard/androguard/issues/1030
Lots more discusion here:
https://gitlab.com/fdroid/fdroidserver/-/issues/1128
"""
class NoOverwriteDict(dict):
def __setitem__(self, k, v):
if k not in self:
super().__setitem__(k, v)
cert_encoded = None cert_encoded = None
found_certs = [] with zipfile.ZipFile(apkpath, 'r') as apk:
apkobject = get_androguard_APK(apkpath) cert_files = [n for n in apk.namelist() if SIGNATURE_BLOCK_FILE_REGEX.match(n)]
apkobject._v2_blocks = NoOverwriteDict() if len(cert_files) > 1:
certs_v3 = apkobject.get_certificates_der_v3() logging.error(_("Found multiple JAR Signature Block Files in {path}").format(path=apkpath))
if certs_v3: return None
cert_v3 = certs_v3[0] elif len(cert_files) == 1:
found_certs.append(cert_v3) cert_encoded = get_certificate(apk.read(cert_files[0]))
if not cert_encoded:
logging.debug(_('Using APK Signature v3'))
cert_encoded = cert_v3
certs_v2 = apkobject.get_certificates_der_v2() if not cert_encoded and use_androguard():
if certs_v2: apkobject = _get_androguard_APK(apkpath)
cert_v2 = certs_v2[0] certs = apkobject.get_certificates_der_v2()
found_certs.append(cert_v2) if len(certs) > 0:
if not cert_encoded:
logging.debug(_('Using APK Signature v2')) logging.debug(_('Using APK Signature v2'))
cert_encoded = cert_v2 cert_encoded = certs[0]
if not cert_encoded:
if get_min_sdk_version(apkobject) < 24 or ( certs = apkobject.get_certificates_der_v3()
not (certs_v3 or certs_v2) and get_effective_target_sdk_version(apkobject) < 30 if len(certs) > 0:
): logging.debug(_('Using APK Signature v3'))
with zipfile.ZipFile(apkpath, 'r') as apk: cert_encoded = certs[0]
cert_files = [
n for n in apk.namelist() if SIGNATURE_BLOCK_FILE_REGEX.match(n)
]
if len(cert_files) > 1:
logging.error(
_("Found multiple JAR Signature Block Files in {path}").format(
path=apkpath
)
)
return
elif len(cert_files) == 1:
signature_block_file = cert_files[0]
signature_file = (
cert_files[0][: signature_block_file.rindex('.')] + '.SF'
)
cert_v1 = get_certificate(
apk.read(signature_block_file),
apk.read(signature_file),
)
found_certs.append(cert_v1)
if not cert_encoded:
logging.debug(_('Using JAR Signature'))
cert_encoded = cert_v1
if not cert_encoded: if not cert_encoded:
logging.error(_("No signing certificates found in {path}").format(path=apkpath)) logging.error(_("No signing certificates found in {path}").format(path=apkpath))
return return None
if not all(cert == found_certs[0] for cert in found_certs):
logging.error(
_("APK signatures have different certificates in {path}:").format(
path=apkpath
)
)
return
return cert_encoded return cert_encoded
def apk_signer_fingerprint(apk_path): def apk_signer_fingerprint(apk_path):
"""Get SHA-256 fingerprint string for the first signer from given APK. """Obtain sha256 signing-key fingerprint for APK.
Extracts hexadecimal sha256 signing-key fingerprint string
for a given APK.
Parameters Parameters
---------- ----------
@ -3329,8 +3150,7 @@ def apk_signer_fingerprint(apk_path):
Returns Returns
------- -------
Standard SHA-256 signer fingerprint signature fingerprint
""" """
cert_encoded = get_first_signer_certificate(apk_path) cert_encoded = get_first_signer_certificate(apk_path)
if not cert_encoded: if not cert_encoded:
@ -3339,7 +3159,10 @@ def apk_signer_fingerprint(apk_path):
def apk_signer_fingerprint_short(apk_path): def apk_signer_fingerprint_short(apk_path):
"""Get 7 hex digit SHA-256 fingerprint string for the first signer from given APK. """Obtain shortened sha256 signing-key fingerprint for APK.
Extracts the first 7 hexadecimal digits of sha256 signing-key fingerprint
for a given pkcs7 APK.
Parameters Parameters
---------- ----------
@ -3348,8 +3171,7 @@ def apk_signer_fingerprint_short(apk_path):
Returns Returns
------- -------
first 7 chars of the standard SHA-256 signer fingerprint shortened signing-key fingerprint
""" """
return apk_signer_fingerprint(apk_path)[:7] return apk_signer_fingerprint(apk_path)[:7]
@ -3568,7 +3390,7 @@ def apk_extract_signatures(apkpath, outdir):
def get_min_sdk_version(apk): def get_min_sdk_version(apk):
"""Wrap the androguard function to always return an integer. """Wrap the androguard function to always return and int.
Fall back to 1 if we can't get a valid minsdk version. Fall back to 1 if we can't get a valid minsdk version.
@ -3579,7 +3401,7 @@ def get_min_sdk_version(apk):
Returns Returns
------- -------
minSdkVersion: int minsdk: int
""" """
try: try:
return int(apk.get_min_sdk_version()) return int(apk.get_min_sdk_version())
@ -3587,24 +3409,6 @@ def get_min_sdk_version(apk):
return 1 return 1
def get_effective_target_sdk_version(apk):
"""Wrap the androguard function to always return an integer.
Parameters
----------
apk
androguard APK object
Returns
-------
targetSdkVersion: int
"""
try:
return int(apk.get_effective_target_sdk_version())
except TypeError:
return get_min_sdk_version(apk)
def get_apksigner_smartcardoptions(smartcardoptions): def get_apksigner_smartcardoptions(smartcardoptions):
if '-providerName' in smartcardoptions.copy(): if '-providerName' in smartcardoptions.copy():
pos = smartcardoptions.index('-providerName') pos = smartcardoptions.index('-providerName')
@ -4016,33 +3820,14 @@ def get_cert_fingerprint(pubkey):
return " ".join(ret) return " ".join(ret)
def get_certificate(signature_block_file, signature_file=None): def get_certificate(signature_block_file):
"""Extract a single DER certificate from JAR Signature's "Signature Block File". """Extract a DER certificate from JAR Signature's "Signature Block File".
If there is more than one signer certificate, this exits with an
error, unless the signature_file is provided. If that is set, it
will return the certificate that matches the Signature File, for
example, if there is a certificate chain, like TLS does. In the
fdroidserver use cases, there should always be a single signer.
But rarely, some APKs include certificate chains.
This could be replaced by androguard's APK.get_certificate_der()
provided the cert chain fix was merged there. Maybe in 4.1.2?
https://github.com/androguard/androguard/pull/1038
https://docs.oracle.com/en/java/javase/21/docs/specs/man/jarsigner.html#the-signed-jar-file
Parameters Parameters
---------- ----------
signature_block_file signature_block_file
Bytes representing the PKCS#7 signer certificate and file bytes (as string) representing the
signature, as read directly out of the JAR/APK, e.g. CERT.RSA. certificate, as read directly out of the APK/ZIP
signature_file
Bytes representing the manifest signed by the Signature Block
File, e.g. CERT.SF. If this is not given, the assumption is
there will be only a single certificate in
signature_block_file, otherwise it is an error.
Returns Returns
------- -------
@ -4050,107 +3835,18 @@ def get_certificate(signature_block_file, signature_file=None):
or None in case of error or None in case of error
""" """
pkcs7obj = cms.ContentInfo.load(signature_block_file) content = decoder.decode(signature_block_file, asn1Spec=rfc2315.ContentInfo())[0]
certificates = pkcs7obj['content']['certificates'] if content.getComponentByName('contentType') != rfc2315.signedData:
if len(certificates) == 1: return None
return certificates[0].chosen.dump() content = decoder.decode(content.getComponentByName('content'),
elif not signature_file: asn1Spec=rfc2315.SignedData())[0]
logging.error(_('Found multiple Signer Certificates!')) try:
return certificates = content.getComponentByName('certificates')
certificate = get_jar_signer_certificate(pkcs7obj, signature_file) cert = certificates[0].getComponentByName('certificate')
if certificate: except PyAsn1Error:
return certificate.chosen.dump() logging.error("Certificates not found.")
return None
return encoder.encode(cert)
def _find_matching_certificate(signer_info, certificate):
"""Find the certificates that matches signer_info using issuer and serial number.
https://android.googlesource.com/platform/tools/apksig/+/refs/tags/android-13.0.0_r3/src/main/java/com/android/apksig/internal/apk/v1/V1SchemeVerifier.java#590
https://android.googlesource.com/platform/tools/apksig/+/refs/tags/android-13.0.0_r3/src/main/java/com/android/apksig/internal/x509/Certificate.java#55
"""
certificate_serial = certificate.chosen['tbs_certificate']['serial_number']
expected_issuer_serial = signer_info['sid'].chosen
return (
expected_issuer_serial['issuer'] == certificate.chosen.issuer
and expected_issuer_serial['serial_number'] == certificate_serial
)
def get_jar_signer_certificate(pkcs7obj: cms.ContentInfo, signature_file: bytes):
"""Return the one certificate in a chain that actually signed the manifest.
PKCS#7-signed data can include certificate chains for use cases
where an Certificate Authority (CA) is used. Android does not
validate the certificate chain on APK signatures, so neither does
this.
https://android.googlesource.com/platform/tools/apksig/+/refs/tags/android-13.0.0_r3/src/main/java/com/android/apksig/internal/apk/v1/V1SchemeVerifier.java#512
Some useful fodder for understanding all this:
https://docs.oracle.com/javase/tutorial/deployment/jar/intro.html
https://technotes.shemyak.com/posts/jar-signature-block-file-format/
https://docs.oracle.com/en/java/javase/21/docs/specs/man/jarsigner.html#the-signed-jar-file
https://qistoph.blogspot.com/2012/01/manual-verify-pkcs7-signed-data-with.html
"""
import oscrypto.asymmetric
import oscrypto.errors
# Android attempts to verify all SignerInfos and then picks the first verified SignerInfo.
first_verified_signer_info = None
first_verified_signer_info_signing_certificate = None
for signer_info in pkcs7obj['content']['signer_infos']:
signature = signer_info['signature'].contents
digest_algorithm = signer_info["digest_algorithm"]["algorithm"].native
public_key = None
for certificate in pkcs7obj['content']['certificates']:
if _find_matching_certificate(signer_info, certificate):
public_key = oscrypto.asymmetric.load_public_key(certificate.chosen.public_key)
break
if public_key is None:
logging.info('No certificate found that matches signer info!')
continue
signature_algo = signer_info['signature_algorithm'].signature_algo
if signature_algo == 'rsassa_pkcs1v15':
# ASN.1 - 1.2.840.113549.1.1.1
verify_func = oscrypto.asymmetric.rsa_pkcs1v15_verify
elif signature_algo == 'rsassa_pss':
# ASN.1 - 1.2.840.113549.1.1.10
verify_func = oscrypto.asymmetric.rsa_pss_verify
elif signature_algo == 'dsa':
# ASN.1 - 1.2.840.10040.4.1
verify_func = oscrypto.asymmetric.dsa_verify
elif signature_algo == 'ecdsa':
# ASN.1 - 1.2.840.10045.4
verify_func = oscrypto.asymmetric.ecdsa_verify
else:
logging.error(
'Unknown signature algorithm %s:\n %s\n %s'
% (
signature_algo,
hexlify(certificate.chosen.sha256).decode(),
certificate.chosen.subject.human_friendly,
),
)
return
try:
verify_func(public_key, signature, signature_file, digest_algorithm)
if not first_verified_signer_info:
first_verified_signer_info = signer_info
first_verified_signer_info_signing_certificate = certificate
except oscrypto.errors.SignatureError as e:
logging.error(
'"%s", skipping:\n %s\n %s' % (
e,
hexlify(certificate.chosen.sha256).decode(),
certificate.chosen.subject.human_friendly),
)
if first_verified_signer_info_signing_certificate:
return first_verified_signer_info_signing_certificate
def load_stats_fdroid_signing_key_fingerprints(): def load_stats_fdroid_signing_key_fingerprints():
@ -4429,12 +4125,7 @@ def is_repo_file(filename, for_gpg_signing=False):
b'index_unsigned.jar', b'index_unsigned.jar',
] ]
if not for_gpg_signing: if not for_gpg_signing:
ignore_files += [ ignore_files += [b'entry.json', b'index-v1.json', b'index-v2.json']
b'altstore-index.json',
b'entry.json',
b'index-v1.json',
b'index-v2.json',
]
return ( return (
os.path.isfile(filename) os.path.isfile(filename)

View File

@ -25,12 +25,11 @@ import re
import subprocess import subprocess
import time import time
import urllib import urllib
from typing import Dict, List from typing import Dict, Optional, List
from git import Repo from git import Repo
import yaml import yaml
from argparse import ArgumentParser from argparse import ArgumentParser, Namespace
import logging import logging
from shlex import split
import shutil import shutil
import git import git
from pathlib import Path from pathlib import Path
@ -41,6 +40,7 @@ from . import index
from .exception import FDroidException from .exception import FDroidException
config = None config = None
options: Optional[Namespace] = None
start_timestamp = time.gmtime() start_timestamp = time.gmtime()
GIT_BRANCH = 'master' GIT_BRANCH = 'master'
@ -49,11 +49,9 @@ BINARY_TRANSPARENCY_DIR = 'binary_transparency'
AUTO_S3CFG = '.fdroid-deploy-s3cfg' AUTO_S3CFG = '.fdroid-deploy-s3cfg'
USER_S3CFG = 's3cfg' USER_S3CFG = 's3cfg'
USER_RCLONE_CONF = None
REMOTE_HOSTNAME_REGEX = re.compile(r'\W*\w+\W+(\w+).*') REMOTE_HOSTNAME_REGEX = re.compile(r'\W*\w+\W+(\w+).*')
INDEX_FILES = [ INDEX_FILES = [
"altstore-index.json",
"entry.jar", "entry.jar",
"entry.json", "entry.json",
"entry.json.asc", "entry.json.asc",
@ -96,7 +94,7 @@ def _get_index_includes(base_dir):
return index_includes return index_includes
def update_awsbucket(repo_section, is_index_only=False, verbose=False, quiet=False): def update_awsbucket(repo_section, is_index_only=False):
"""Upload the contents of the directory `repo_section` (including subdirectories) to the AWS S3 "bucket". """Upload the contents of the directory `repo_section` (including subdirectories) to the AWS S3 "bucket".
The contents of that subdir of the The contents of that subdir of the
@ -104,35 +102,11 @@ def update_awsbucket(repo_section, is_index_only=False, verbose=False, quiet=Fal
Requires AWS credentials set in config.yml: awsaccesskeyid, awssecretkey Requires AWS credentials set in config.yml: awsaccesskeyid, awssecretkey
""" """
logging.debug( logging.debug('Syncing "' + repo_section + '" to Amazon S3 bucket "'
f'''Syncing "{repo_section}" to Amazon S3 bucket "{config['awsbucket']}"''' + config['awsbucket'] + '"')
)
if common.set_command_in_config('s3cmd') and common.set_command_in_config('rclone'): if common.set_command_in_config('s3cmd'):
logging.info(
'Both rclone and s3cmd are installed. Checking config.yml for preference.'
)
if config['s3cmd'] is not True and config['rclone'] is not True:
logging.warning(
'No syncing tool set in config.yml!. Defaulting to using s3cmd'
)
update_awsbucket_s3cmd(repo_section, is_index_only)
if config['s3cmd'] is True and config['rclone'] is True:
logging.warning(
'Both syncing tools set in config.yml!. Defaulting to using s3cmd'
)
update_awsbucket_s3cmd(repo_section, is_index_only)
if config['s3cmd'] is True and config['rclone'] is not True:
update_awsbucket_s3cmd(repo_section, is_index_only)
if config['rclone'] is True and config['s3cmd'] is not True:
update_remote_storage_with_rclone(
repo_section, is_index_only, verbose, quiet
)
elif common.set_command_in_config('s3cmd'):
update_awsbucket_s3cmd(repo_section, is_index_only) update_awsbucket_s3cmd(repo_section, is_index_only)
elif common.set_command_in_config('rclone'):
update_remote_storage_with_rclone(repo_section, is_index_only, verbose, quiet)
else: else:
update_awsbucket_libcloud(repo_section, is_index_only) update_awsbucket_libcloud(repo_section, is_index_only)
@ -148,20 +122,17 @@ def update_awsbucket_s3cmd(repo_section, is_index_only=False):
files are deleted from the server. The last pass is the only pass files are deleted from the server. The last pass is the only pass
to use a full MD5 checksum of all files to detect changes. to use a full MD5 checksum of all files to detect changes.
""" """
logging.debug(_('Using s3cmd to sync with: {url}').format(url=config['awsbucket'])) logging.debug(_('Using s3cmd to sync with: {url}')
.format(url=config['awsbucket']))
if os.path.exists(USER_S3CFG): if os.path.exists(USER_S3CFG):
logging.info(_('Using "{path}" for configuring s3cmd.').format(path=USER_S3CFG)) logging.info(_('Using "{path}" for configuring s3cmd.').format(path=USER_S3CFG))
configfilename = USER_S3CFG configfilename = USER_S3CFG
else: else:
fd = os.open(AUTO_S3CFG, os.O_CREAT | os.O_TRUNC | os.O_WRONLY, 0o600) fd = os.open(AUTO_S3CFG, os.O_CREAT | os.O_TRUNC | os.O_WRONLY, 0o600)
logging.debug( logging.debug(_('Creating "{path}" for configuring s3cmd.').format(path=AUTO_S3CFG))
_('Creating "{path}" for configuring s3cmd.').format(path=AUTO_S3CFG)
)
os.write(fd, '[default]\n'.encode('utf-8')) os.write(fd, '[default]\n'.encode('utf-8'))
os.write( os.write(fd, ('access_key = ' + config['awsaccesskeyid'] + '\n').encode('utf-8'))
fd, ('access_key = ' + config['awsaccesskeyid'] + '\n').encode('utf-8')
)
os.write(fd, ('secret_key = ' + config['awssecretkey'] + '\n').encode('utf-8')) os.write(fd, ('secret_key = ' + config['awssecretkey'] + '\n').encode('utf-8'))
os.close(fd) os.close(fd)
configfilename = AUTO_S3CFG configfilename = AUTO_S3CFG
@ -169,34 +140,24 @@ def update_awsbucket_s3cmd(repo_section, is_index_only=False):
s3bucketurl = 's3://' + config['awsbucket'] s3bucketurl = 's3://' + config['awsbucket']
s3cmd = [config['s3cmd'], '--config=' + configfilename] s3cmd = [config['s3cmd'], '--config=' + configfilename]
if subprocess.call(s3cmd + ['info', s3bucketurl]) != 0: if subprocess.call(s3cmd + ['info', s3bucketurl]) != 0:
logging.warning(_('Creating new S3 bucket: {url}').format(url=s3bucketurl)) logging.warning(_('Creating new S3 bucket: {url}')
.format(url=s3bucketurl))
if subprocess.call(s3cmd + ['mb', s3bucketurl]) != 0: if subprocess.call(s3cmd + ['mb', s3bucketurl]) != 0:
logging.error( logging.error(_('Failed to create S3 bucket: {url}')
_('Failed to create S3 bucket: {url}').format(url=s3bucketurl) .format(url=s3bucketurl))
)
raise FDroidException() raise FDroidException()
s3cmd_sync = s3cmd + ['sync', '--acl-public'] s3cmd_sync = s3cmd + ['sync', '--acl-public']
options = common.get_options() if options.verbose:
if options and options.verbose:
s3cmd_sync += ['--verbose'] s3cmd_sync += ['--verbose']
if options and options.quiet: if options.quiet:
s3cmd_sync += ['--quiet'] s3cmd_sync += ['--quiet']
s3url = s3bucketurl + '/fdroid/' s3url = s3bucketurl + '/fdroid/'
logging.debug(
_('s3cmd sync indexes {path} to {url} and delete').format(
path=repo_section, url=s3url
)
)
if is_index_only: if is_index_only:
logging.debug( logging.debug(_('s3cmd syncs indexes from {path} to {url} and deletes removed')
_('s3cmd syncs indexes from {path} to {url} and deletes removed').format( .format(path=repo_section, url=s3url))
path=repo_section, url=s3url
)
)
sync_indexes_flags = [] sync_indexes_flags = []
sync_indexes_flags.extend(_get_index_includes(repo_section)) sync_indexes_flags.extend(_get_index_includes(repo_section))
sync_indexes_flags.append('--delete-removed') sync_indexes_flags.append('--delete-removed')
@ -205,9 +166,7 @@ def update_awsbucket_s3cmd(repo_section, is_index_only=False):
sync_indexes_flags.append('--no-check-md5') sync_indexes_flags.append('--no-check-md5')
else: else:
sync_indexes_flags.append('--check-md5') sync_indexes_flags.append('--check-md5')
returncode = subprocess.call( returncode = subprocess.call(s3cmd_sync + sync_indexes_flags + [repo_section, s3url])
s3cmd_sync + sync_indexes_flags + [repo_section, s3url]
)
if returncode != 0: if returncode != 0:
raise FDroidException() raise FDroidException()
else: else:
@ -228,11 +187,8 @@ def update_awsbucket_s3cmd(repo_section, is_index_only=False):
if returncode != 0: if returncode != 0:
raise FDroidException() raise FDroidException()
logging.debug( logging.debug(_('s3cmd sync indexes {path} to {url} and delete')
_('s3cmd sync indexes {path} to {url} and delete').format( .format(path=repo_section, url=s3url))
path=repo_section, url=s3url
)
)
s3cmd_sync.append('--delete-removed') s3cmd_sync.append('--delete-removed')
s3cmd_sync.append('--delete-after') s3cmd_sync.append('--delete-after')
if options.no_checksum: if options.no_checksum:
@ -243,134 +199,6 @@ def update_awsbucket_s3cmd(repo_section, is_index_only=False):
raise FDroidException() raise FDroidException()
def update_remote_storage_with_rclone(
repo_section, is_index_only=False, verbose=False, quiet=False
):
"""
Upload fdroid repo folder to remote storage using rclone sync.
Rclone sync can send the files to any supported remote storage
service once without numerous polling.
If remote storage is s3 e.g aws s3, wasabi, filebase then path will be
bucket_name/fdroid/repo where bucket_name will be an s3 bucket
If remote storage is storage drive/sftp e.g google drive, rsync.net
the new path will be bucket_name/fdroid/repo where bucket_name
will be a folder
Better than the s3cmd command as it does the syncing in one command
Check https://rclone.org/docs/#config-config-file (optional config file)
"""
logging.debug(_('Using rclone to sync with: {url}').format(url=config['awsbucket']))
if config.get('path_to_custom_rclone_config') is not None:
USER_RCLONE_CONF = config['path_to_custom_rclone_config']
if os.path.exists(USER_RCLONE_CONF):
logging.info("'path_to_custom_rclone_config' found in config.yml")
logging.info(
_('Using "{path}" for syncing with remote storage.').format(
path=USER_RCLONE_CONF
)
)
configfilename = USER_RCLONE_CONF
else:
logging.info('Custom configuration not found.')
logging.info(
'Using default configuration at {}'.format(
subprocess.check_output('rclone config file')
)
)
configfilename = None
else:
logging.warning("'path_to_custom_rclone_config' not found in config.yml")
logging.info('Custom configuration not found.')
logging.info(
'Using default configuration at {}'.format(
subprocess.check_output('rclone config file')
)
)
configfilename = None
upload_dir = 'fdroid/' + repo_section
if not config.get('rclone_config') or not config.get('awsbucket'):
raise FDroidException(
_('To use rclone, rclone_config and awsbucket must be set in config.yml!')
)
if is_index_only:
sources = _get_index_file_paths(repo_section)
else:
sources = repo_section
for source in sources:
if isinstance(config['rclone_config'], str):
rclone_sync_command = (
'rclone sync '
+ source
+ ' '
+ config['rclone_config']
+ ':'
+ config['awsbucket']
+ '/'
+ upload_dir
)
rclone_sync_command = split(rclone_sync_command)
if verbose:
rclone_sync_command += ['--verbose']
elif quiet:
rclone_sync_command += ['--quiet']
if configfilename:
rclone_sync_command += split('--config=' + configfilename)
complete_remote_path = (
config['rclone_config'] + ':' + config['awsbucket'] + '/' + upload_dir
)
logging.debug(
"rclone sync all files in " + source + ' to ' + complete_remote_path
)
if subprocess.call(rclone_sync_command) != 0:
raise FDroidException()
if isinstance(config['rclone_config'], list):
for remote_config in config['rclone_config']:
rclone_sync_command = (
'rclone sync '
+ source
+ ' '
+ remote_config
+ ':'
+ config['awsbucket']
+ '/'
+ upload_dir
)
rclone_sync_command = split(rclone_sync_command)
if verbose:
rclone_sync_command += ['--verbose']
elif quiet:
rclone_sync_command += ['--quiet']
if configfilename:
rclone_sync_command += split('--config=' + configfilename)
complete_remote_path = (
remote_config + ':' + config['awsbucket'] + '/' + upload_dir
)
logging.debug(
"rclone sync all files in " + source + ' to ' + complete_remote_path
)
if subprocess.call(rclone_sync_command) != 0:
raise FDroidException()
def update_awsbucket_libcloud(repo_section, is_index_only=False): def update_awsbucket_libcloud(repo_section, is_index_only=False):
"""No summary. """No summary.
@ -382,28 +210,22 @@ def update_awsbucket_libcloud(repo_section, is_index_only=False):
Requires AWS credentials set in config.yml: awsaccesskeyid, awssecretkey Requires AWS credentials set in config.yml: awsaccesskeyid, awssecretkey
""" """
logging.debug( logging.debug(_('using Apache libcloud to sync with {url}')
_('using Apache libcloud to sync with {url}').format(url=config['awsbucket']) .format(url=config['awsbucket']))
)
import libcloud.security import libcloud.security
libcloud.security.VERIFY_SSL_CERT = True libcloud.security.VERIFY_SSL_CERT = True
from libcloud.storage.types import Provider, ContainerDoesNotExistError from libcloud.storage.types import Provider, ContainerDoesNotExistError
from libcloud.storage.providers import get_driver from libcloud.storage.providers import get_driver
if not config.get('awsaccesskeyid') or not config.get('awssecretkey'): if not config.get('awsaccesskeyid') or not config.get('awssecretkey'):
raise FDroidException( raise FDroidException(
_( _('To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.yml!'))
'To use awsbucket, awssecretkey and awsaccesskeyid must also be set in config.yml!'
)
)
awsbucket = config['awsbucket'] awsbucket = config['awsbucket']
if os.path.exists(USER_S3CFG): if os.path.exists(USER_S3CFG):
raise FDroidException( raise FDroidException(_('"{path}" exists but s3cmd is not installed!')
_('"{path}" exists but s3cmd is not installed!').format(path=USER_S3CFG) .format(path=USER_S3CFG))
)
cls = get_driver(Provider.S3) cls = get_driver(Provider.S3)
driver = cls(config['awsaccesskeyid'], config['awssecretkey']) driver = cls(config['awsaccesskeyid'], config['awssecretkey'])
@ -411,7 +233,8 @@ def update_awsbucket_libcloud(repo_section, is_index_only=False):
container = driver.get_container(container_name=awsbucket) container = driver.get_container(container_name=awsbucket)
except ContainerDoesNotExistError: except ContainerDoesNotExistError:
container = driver.create_container(container_name=awsbucket) container = driver.create_container(container_name=awsbucket)
logging.info(_('Created new container "{name}"').format(name=container.name)) logging.info(_('Created new container "{name}"')
.format(name=container.name))
upload_dir = 'fdroid/' + repo_section upload_dir = 'fdroid/' + repo_section
objs = dict() objs = dict()
@ -420,22 +243,12 @@ def update_awsbucket_libcloud(repo_section, is_index_only=False):
objs[obj.name] = obj objs[obj.name] = obj
if is_index_only: if is_index_only:
index_files = [ index_files = [f"{os.getcwd()}/{name}" for name in _get_index_file_paths(repo_section)]
f"{os.getcwd()}/{name}" for name in _get_index_file_paths(repo_section) files_to_upload = [os.path.join(root, name) for root, dirs, files in os.walk(os.path.join(os.getcwd(), repo_section)) for name in files]
]
files_to_upload = [
os.path.join(root, name)
for root, dirs, files in os.walk(os.path.join(os.getcwd(), repo_section))
for name in files
]
files_to_upload = list(set(files_to_upload) & set(index_files)) files_to_upload = list(set(files_to_upload) & set(index_files))
else: else:
files_to_upload = [ files_to_upload = [os.path.join(root, name) for root, dirs, files in os.walk(os.path.join(os.getcwd(), repo_section)) for name in files]
os.path.join(root, name)
for root, dirs, files in os.walk(os.path.join(os.getcwd(), repo_section))
for name in files
]
for file_to_upload in files_to_upload: for file_to_upload in files_to_upload:
upload = False upload = False
@ -469,15 +282,13 @@ def update_awsbucket_libcloud(repo_section, is_index_only=False):
extra['content_type'] = 'application/pgp-signature' extra['content_type'] = 'application/pgp-signature'
elif file_to_upload.endswith('.asc'): elif file_to_upload.endswith('.asc'):
extra['content_type'] = 'application/pgp-signature' extra['content_type'] = 'application/pgp-signature'
path = os.path.relpath(file_to_upload) logging.info(' uploading ' + os.path.relpath(file_to_upload)
logging.info(f' uploading {path} to s3://{awsbucket}/{object_name}') + ' to s3://' + awsbucket + '/' + object_name)
with open(file_to_upload, 'rb') as iterator: with open(file_to_upload, 'rb') as iterator:
obj = driver.upload_object_via_stream( obj = driver.upload_object_via_stream(iterator=iterator,
iterator=iterator, container=container,
container=container, object_name=object_name,
object_name=object_name, extra=extra)
extra=extra,
)
# delete the remnants in the bucket, they do not exist locally # delete the remnants in the bucket, they do not exist locally
while objs: while objs:
object_name, obj = objs.popitem() object_name, obj = objs.popitem()
@ -513,7 +324,6 @@ def update_serverwebroot(serverwebroot, repo_section):
_('rsync is missing or broken: {error}').format(error=e) _('rsync is missing or broken: {error}').format(error=e)
) from e ) from e
rsyncargs = ['rsync', '--archive', '--delete-after', '--safe-links'] rsyncargs = ['rsync', '--archive', '--delete-after', '--safe-links']
options = common.get_options()
if not options or not options.no_checksum: if not options or not options.no_checksum:
rsyncargs.append('--checksum') rsyncargs.append('--checksum')
if options and options.verbose: if options and options.verbose:
@ -521,15 +331,9 @@ def update_serverwebroot(serverwebroot, repo_section):
if options and options.quiet: if options and options.quiet:
rsyncargs += ['--quiet'] rsyncargs += ['--quiet']
if options and options.identity_file: if options and options.identity_file:
rsyncargs += [ rsyncargs += ['-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' + options.identity_file]
'-e',
'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' + options.identity_file,
]
elif config and config.get('identity_file'): elif config and config.get('identity_file'):
rsyncargs += [ rsyncargs += ['-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' + config['identity_file']]
'-e',
'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' + config['identity_file'],
]
url = serverwebroot['url'] url = serverwebroot['url']
is_index_only = serverwebroot.get('index_only', False) is_index_only = serverwebroot.get('index_only', False)
logging.info('rsyncing ' + repo_section + ' to ' + url) logging.info('rsyncing ' + repo_section + ' to ' + url)
@ -546,15 +350,10 @@ def update_serverwebroot(serverwebroot, repo_section):
if subprocess.call(rsyncargs + [repo_section, url]) != 0: if subprocess.call(rsyncargs + [repo_section, url]) != 0:
raise FDroidException() raise FDroidException()
# upload "current version" symlinks if requested # upload "current version" symlinks if requested
if ( if config['make_current_version_link'] and repo_section == 'repo':
config
and config.get('make_current_version_link')
and repo_section == 'repo'
):
links_to_upload = [] links_to_upload = []
for f in ( for f in glob.glob('*.apk') \
glob.glob('*.apk') + glob.glob('*.apk.asc') + glob.glob('*.apk.sig') + glob.glob('*.apk.asc') + glob.glob('*.apk.sig'):
):
if os.path.islink(f): if os.path.islink(f):
links_to_upload.append(f) links_to_upload.append(f)
if len(links_to_upload) > 0: if len(links_to_upload) > 0:
@ -603,11 +402,9 @@ def sync_from_localcopy(repo_section, local_copy_dir):
# trailing slashes have a meaning in rsync which is not needed here, so # trailing slashes have a meaning in rsync which is not needed here, so
# make sure both paths have exactly one trailing slash # make sure both paths have exactly one trailing slash
common.local_rsync( common.local_rsync(options,
common.get_options(), [os.path.join(local_copy_dir, repo_section).rstrip('/') + '/'],
[os.path.join(local_copy_dir, repo_section).rstrip('/') + '/'], repo_section.rstrip('/') + '/')
repo_section.rstrip('/') + '/',
)
offline_copy = os.path.join(local_copy_dir, BINARY_TRANSPARENCY_DIR) offline_copy = os.path.join(local_copy_dir, BINARY_TRANSPARENCY_DIR)
if os.path.exists(os.path.join(offline_copy, '.git')): if os.path.exists(os.path.join(offline_copy, '.git')):
@ -624,7 +421,7 @@ def update_localcopy(repo_section, local_copy_dir):
""" """
# local_copy_dir is guaranteed to have a trailing slash in main() below # local_copy_dir is guaranteed to have a trailing slash in main() below
common.local_rsync(common.get_options(), [repo_section], local_copy_dir) common.local_rsync(options, [repo_section], local_copy_dir)
offline_copy = os.path.join(os.getcwd(), BINARY_TRANSPARENCY_DIR) offline_copy = os.path.join(os.getcwd(), BINARY_TRANSPARENCY_DIR)
if os.path.isdir(os.path.join(offline_copy, '.git')): if os.path.isdir(os.path.join(offline_copy, '.git')):
@ -655,14 +452,11 @@ def update_servergitmirrors(servergitmirrors, repo_section):
""" """
from clint.textui import progress from clint.textui import progress
if config.get('local_copy_dir') \
if config.get('local_copy_dir') and not config.get('sync_from_local_copy_dir'): and not config.get('sync_from_local_copy_dir'):
logging.debug( logging.debug(_('Offline machine, skipping git mirror generation until `fdroid deploy`'))
_('Offline machine, skipping git mirror generation until `fdroid deploy`')
)
return return
options = common.get_options()
workspace_dir = Path(os.getcwd()) workspace_dir = Path(os.getcwd())
# right now we support only 'repo' git-mirroring # right now we support only 'repo' git-mirroring
@ -679,18 +473,12 @@ def update_servergitmirrors(servergitmirrors, repo_section):
dotgit_size = _get_size(dotgit) dotgit_size = _get_size(dotgit)
dotgit_over_limit = dotgit_size > config['git_mirror_size_limit'] dotgit_over_limit = dotgit_size > config['git_mirror_size_limit']
if os.path.isdir(dotgit) and dotgit_over_limit: if os.path.isdir(dotgit) and dotgit_over_limit:
logging.warning( logging.warning(_('Deleting git-mirror history, repo is too big ({size} max {limit})')
_( .format(size=dotgit_size, limit=config['git_mirror_size_limit']))
'Deleting git-mirror history, repo is too big ({size} max {limit})'
).format(size=dotgit_size, limit=config['git_mirror_size_limit'])
)
shutil.rmtree(dotgit) shutil.rmtree(dotgit)
if options.no_keep_git_mirror_archive and dotgit_over_limit: if options.no_keep_git_mirror_archive and dotgit_over_limit:
logging.warning( logging.warning(_('Deleting archive, repo is too big ({size} max {limit})')
_('Deleting archive, repo is too big ({size} max {limit})').format( .format(size=dotgit_size, limit=config['git_mirror_size_limit']))
size=dotgit_size, limit=config['git_mirror_size_limit']
)
)
archive_path = os.path.join(git_mirror_path, 'fdroid', 'archive') archive_path = os.path.join(git_mirror_path, 'fdroid', 'archive')
shutil.rmtree(archive_path, ignore_errors=True) shutil.rmtree(archive_path, ignore_errors=True)
@ -708,7 +496,6 @@ def update_servergitmirrors(servergitmirrors, repo_section):
def update(self, op_code, current, maximum=None, message=None): def update(self, op_code, current, maximum=None, message=None):
if isinstance(maximum, float): if isinstance(maximum, float):
progressbar.show(current, maximum) progressbar.show(current, maximum)
progress = MyProgressPrinter() progress = MyProgressPrinter()
else: else:
progress = None progress = None
@ -732,42 +519,33 @@ def update_servergitmirrors(servergitmirrors, repo_section):
# trailing slashes have a meaning in rsync which is not needed here, so # trailing slashes have a meaning in rsync which is not needed here, so
# make sure both paths have exactly one trailing slash # make sure both paths have exactly one trailing slash
if is_index_only: if is_index_only:
files_to_sync = [ files_to_sync = [str(workspace_dir / repo_section / index_file) for index_file in INDEX_FILES]
str(workspace_dir / repo_section / index_file)
for index_file in INDEX_FILES
]
else: else:
files_to_sync = [str(workspace_dir / repo_section).rstrip('/') + '/'] files_to_sync = [str(workspace_dir / repo_section).rstrip('/') + '/']
common.local_rsync( common.local_rsync(options, files_to_sync, git_repodir.rstrip('/') + '/')
common.get_options(), files_to_sync, git_repodir.rstrip('/') + '/'
)
upload_to_servergitmirror( upload_to_servergitmirror(mirror_config=d,
mirror_config=d, local_repo=repo,
local_repo=repo, enabled_remotes=enabled_remotes,
enabled_remotes=enabled_remotes, repo_section=repo_section,
repo_section=repo_section, is_index_only=is_index_only,
is_index_only=is_index_only, fdroid_dir=git_fdroiddir,
fdroid_dir=git_fdroiddir, git_mirror_path=str(git_mirror_path),
git_mirror_path=str(git_mirror_path), ssh_cmd=ssh_cmd,
ssh_cmd=ssh_cmd, progress=progress)
progress=progress,
)
if progress: if progress:
progressbar.done() progressbar.done()
def upload_to_servergitmirror( def upload_to_servergitmirror(mirror_config: Dict[str, str],
mirror_config: Dict[str, str], local_repo: Repo,
local_repo: Repo, enabled_remotes: List[str],
enabled_remotes: List[str], repo_section: str,
repo_section: str, is_index_only: bool,
is_index_only: bool, fdroid_dir: str,
fdroid_dir: str, git_mirror_path: str,
git_mirror_path: str, ssh_cmd: str,
ssh_cmd: str, progress: git.RemoteProgress) -> None:
progress: git.RemoteProgress,
) -> None:
remote_branch_name = GIT_BRANCH remote_branch_name = GIT_BRANCH
local_branch_name = local_repo.active_branch.name local_branch_name = local_repo.active_branch.name
@ -783,10 +561,9 @@ def upload_to_servergitmirror(
local_repo.create_remote(name, remote_url) local_repo.create_remote(name, remote_url)
logging.info('Mirroring to: ' + remote_url) logging.info('Mirroring to: ' + remote_url)
logging.info("git status:", local_repo.git.status())
if is_index_only: if is_index_only:
local_repo.index.add( local_repo.index.add(_get_index_file_paths(os.path.join('fdroid', repo_section)))
_get_index_file_paths(os.path.join('fdroid', repo_section))
)
else: else:
# sadly index.add don't allow the --all parameter # sadly index.add don't allow the --all parameter
logging.debug('Adding all files to git mirror') logging.debug('Adding all files to git mirror')
@ -795,13 +572,16 @@ def upload_to_servergitmirror(
logging.debug('Committing files into git mirror') logging.debug('Committing files into git mirror')
local_repo.index.commit("fdroidserver git-mirror") local_repo.index.commit("fdroidserver git-mirror")
# only deploy to GitLab Artifacts if too big for GitLab Pages # only deploy to GitLab Artifacts if too big for GitLab Pages
if common.get_dir_size(fdroid_dir) <= common.GITLAB_COM_PAGES_MAX_SIZE: if common.get_dir_size(fdroid_dir) <= common.GITLAB_COM_PAGES_MAX_SIZE:
gitlab_ci_job_name = 'pages' gitlab_ci_job_name = 'pages'
else: else:
gitlab_ci_job_name = 'GitLab Artifacts' gitlab_ci_job_name = 'GitLab Artifacts'
logging.warning( logging.warning(
_('Skipping GitLab Pages mirror because the repo is too large (>%.2fGB)!') _(
'Skipping GitLab Pages mirror because the repo is too large (>%.2fGB)!'
)
% (common.GITLAB_COM_PAGES_MAX_SIZE / 1000000000) % (common.GITLAB_COM_PAGES_MAX_SIZE / 1000000000)
) )
@ -829,42 +609,31 @@ def upload_to_servergitmirror(
local_repo.index.add(['.gitlab-ci.yml']) local_repo.index.add(['.gitlab-ci.yml'])
local_repo.index.commit("fdroidserver git-mirror: Deploy to GitLab Pages") local_repo.index.commit("fdroidserver git-mirror: Deploy to GitLab Pages")
logging.debug(_('Pushing to {url}').format(url=remote.url)) logging.info(_('Pushing to {url}').format(url=remote.url))
with local_repo.git.custom_environment(GIT_SSH_COMMAND=ssh_cmd): with local_repo.git.custom_environment(GIT_SSH_COMMAND=ssh_cmd):
pushinfos = remote.push( pushinfos = remote.push(
f"{local_branch_name}:{remote_branch_name}", f"{local_branch_name}:{remote_branch_name}", force=True, set_upstream=True, progress=progress
force=True,
set_upstream=True,
progress=progress,
) )
for pushinfo in pushinfos: for pushinfo in pushinfos:
if pushinfo.flags & ( if pushinfo.flags & (git.remote.PushInfo.ERROR
git.remote.PushInfo.ERROR | git.remote.PushInfo.REJECTED
| git.remote.PushInfo.REJECTED | git.remote.PushInfo.REMOTE_FAILURE
| git.remote.PushInfo.REMOTE_FAILURE | git.remote.PushInfo.REMOTE_REJECTED):
| git.remote.PushInfo.REMOTE_REJECTED
):
# Show potentially useful messages from git remote # Show potentially useful messages from git remote
for line in progress.other_lines: for line in progress.other_lines:
if line.startswith('remote:'): if line.startswith('remote:'):
logging.debug(line) logging.debug(line)
raise FDroidException( raise FDroidException(remote.url + ' push failed: ' + str(pushinfo.flags)
remote.url + ' ' + pushinfo.summary)
+ ' push failed: '
+ str(pushinfo.flags)
+ ' '
+ pushinfo.summary
)
else: else:
logging.debug(remote.url + ': ' + pushinfo.summary) logging.debug(remote.url + ': ' + pushinfo.summary)
def upload_to_android_observatory(repo_section): def upload_to_android_observatory(repo_section):
import requests import requests
requests # stop unused import warning requests # stop unused import warning
if common.get_options().verbose: if options.verbose:
logging.getLogger("requests").setLevel(logging.INFO) logging.getLogger("requests").setLevel(logging.INFO)
logging.getLogger("urllib3").setLevel(logging.INFO) logging.getLogger("urllib3").setLevel(logging.INFO)
else: else:
@ -883,12 +652,9 @@ def upload_apk_to_android_observatory(path):
from lxml.html import fromstring from lxml.html import fromstring
apkfilename = os.path.basename(path) apkfilename = os.path.basename(path)
r = requests.post( r = requests.post('https://androidobservatory.org/',
'https://androidobservatory.org/', data={'q': common.sha256sum(path), 'searchby': 'hash'},
data={'q': common.sha256sum(path), 'searchby': 'hash'}, headers=net.HEADERS, timeout=300)
headers=net.HEADERS,
timeout=300,
)
if r.status_code == 200: if r.status_code == 200:
# from now on XPath will be used to retrieve the message in the HTML # from now on XPath will be used to retrieve the message in the HTML
# androidobservatory doesn't have a nice API to talk with # androidobservatory doesn't have a nice API to talk with
@ -905,30 +671,22 @@ def upload_apk_to_android_observatory(path):
page = 'https://androidobservatory.org' page = 'https://androidobservatory.org'
if href: if href:
message = _('Found {apkfilename} at {url}').format( message = (_('Found {apkfilename} at {url}')
apkfilename=apkfilename, url=(page + href) .format(apkfilename=apkfilename, url=(page + href)))
)
logging.debug(message) logging.debug(message)
return return
# upload the file with a post request # upload the file with a post request
logging.info( logging.info(_('Uploading {apkfilename} to androidobservatory.org')
_('Uploading {apkfilename} to androidobservatory.org').format( .format(apkfilename=apkfilename))
apkfilename=apkfilename r = requests.post('https://androidobservatory.org/upload',
) files={'apk': (apkfilename, open(path, 'rb'))},
) headers=net.HEADERS,
r = requests.post( allow_redirects=False, timeout=300)
'https://androidobservatory.org/upload',
files={'apk': (apkfilename, open(path, 'rb'))},
headers=net.HEADERS,
allow_redirects=False,
timeout=300,
)
def upload_to_virustotal(repo_section, virustotal_apikey): def upload_to_virustotal(repo_section, virustotal_apikey):
import requests import requests
requests # stop unused import warning requests # stop unused import warning
if repo_section == 'repo': if repo_section == 'repo':
@ -939,47 +697,44 @@ def upload_to_virustotal(repo_section, virustotal_apikey):
with open(os.path.join(repo_section, 'index-v1.json')) as fp: with open(os.path.join(repo_section, 'index-v1.json')) as fp:
data = json.load(fp) data = json.load(fp)
else: else:
local_jar = os.path.join(repo_section, 'index-v1.jar') data, _ignored, _ignored = index.get_index_from_jar(os.path.join(repo_section, 'index-v1.jar'))
data, _ignored, _ignored = index.get_index_from_jar(local_jar)
for packageName, packages in data['packages'].items(): for packageName, packages in data['packages'].items():
for package in packages: for package in packages:
upload_apk_to_virustotal(virustotal_apikey, **package) upload_apk_to_virustotal(virustotal_apikey, **package)
def upload_apk_to_virustotal( def upload_apk_to_virustotal(virustotal_apikey, packageName, apkName, hash,
virustotal_apikey, packageName, apkName, hash, versionCode, **kwargs versionCode, **kwargs):
):
import requests import requests
logging.getLogger("urllib3").setLevel(logging.WARNING) logging.getLogger("urllib3").setLevel(logging.WARNING)
logging.getLogger("requests").setLevel(logging.WARNING) logging.getLogger("requests").setLevel(logging.WARNING)
outputfilename = os.path.join( outputfilename = os.path.join('virustotal',
'virustotal', packageName + '_' + str(versionCode) + '_' + hash + '.json' packageName + '_' + str(versionCode)
) + '_' + hash + '.json')
if os.path.exists(outputfilename): if os.path.exists(outputfilename):
logging.debug(apkName + ' results are in ' + outputfilename) logging.debug(apkName + ' results are in ' + outputfilename)
return outputfilename return outputfilename
repofilename = os.path.join('repo', apkName) repofilename = os.path.join('repo', apkName)
logging.info('Checking if ' + repofilename + ' is on virustotal') logging.info('Checking if ' + repofilename + ' is on virustotal')
headers = {"User-Agent": "F-Droid"} headers = {
"User-Agent": "F-Droid"
}
if 'headers' in kwargs: if 'headers' in kwargs:
for k, v in kwargs['headers'].items(): for k, v in kwargs['headers'].items():
headers[k] = v headers[k] = v
apikey = { data = {
'apikey': virustotal_apikey, 'apikey': virustotal_apikey,
'resource': hash, 'resource': hash,
} }
needs_file_upload = False needs_file_upload = False
while True: while True:
report_url = ( r = requests.get('https://www.virustotal.com/vtapi/v2/file/report?'
'https://www.virustotal.com/vtapi/v2/file/report?' + urllib.parse.urlencode(data), headers=headers, timeout=300)
+ urllib.parse.urlencode(apikey)
)
r = requests.get(report_url, headers=headers, timeout=300)
if r.status_code == 200: if r.status_code == 200:
response = r.json() response = r.json()
if response['response_code'] == 0: if response['response_code'] == 0:
@ -994,12 +749,9 @@ def upload_apk_to_virustotal(
json.dump(response, fp, indent=2, sort_keys=True) json.dump(response, fp, indent=2, sort_keys=True)
if response.get('positives', 0) > 0: if response.get('positives', 0) > 0:
logging.warning( logging.warning(repofilename + ' has been flagged by virustotal '
_('{path} has been flagged by virustotal {count} times:').format( + str(response['positives']) + ' times:'
path=repofilename, count=response['positives'] + '\n\t' + response['permalink'])
),
+'\n\t' + response['permalink'],
)
break break
if r.status_code == 204: if r.status_code == 204:
logging.warning(_('virustotal.com is rate limiting, waiting to retry...')) logging.warning(_('virustotal.com is rate limiting, waiting to retry...'))
@ -1011,48 +763,32 @@ def upload_apk_to_virustotal(
size = os.path.getsize(repofilename) size = os.path.getsize(repofilename)
if size > 200000000: if size > 200000000:
# VirusTotal API 200MB hard limit # VirusTotal API 200MB hard limit
logging.error( logging.error(_('{path} more than 200MB, manually upload: {url}')
_('{path} more than 200MB, manually upload: {url}').format( .format(path=repofilename, url=manual_url))
path=repofilename, url=manual_url
)
)
elif size > 32000000: elif size > 32000000:
# VirusTotal API requires fetching a URL to upload bigger files # VirusTotal API requires fetching a URL to upload bigger files
query_url = ( r = requests.get('https://www.virustotal.com/vtapi/v2/file/scan/upload_url?'
'https://www.virustotal.com/vtapi/v2/file/scan/upload_url?' + urllib.parse.urlencode(data), headers=headers, timeout=300)
+ urllib.parse.urlencode(apikey)
)
r = requests.get(query_url, headers=headers, timeout=300)
if r.status_code == 200: if r.status_code == 200:
upload_url = r.json().get('upload_url') upload_url = r.json().get('upload_url')
elif r.status_code == 403: elif r.status_code == 403:
logging.error( logging.error(_('VirusTotal API key cannot upload files larger than 32MB, '
_( + 'use {url} to upload {path}.')
'VirusTotal API key cannot upload files larger than 32MB, ' .format(path=repofilename, url=manual_url))
+ 'use {url} to upload {path}.'
).format(path=repofilename, url=manual_url)
)
else: else:
r.raise_for_status() r.raise_for_status()
else: else:
upload_url = 'https://www.virustotal.com/vtapi/v2/file/scan' upload_url = 'https://www.virustotal.com/vtapi/v2/file/scan'
if upload_url: if upload_url:
logging.info( logging.info(_('Uploading {apkfilename} to virustotal')
_('Uploading {apkfilename} to virustotal').format(apkfilename=repofilename) .format(apkfilename=repofilename))
) files = {
r = requests.post( 'file': (apkName, open(repofilename, 'rb'))
upload_url, }
data=apikey, r = requests.post(upload_url, data=data, headers=headers, files=files, timeout=300)
headers=headers, logging.debug(_('If this upload fails, try manually uploading to {url}')
files={'file': (apkName, open(repofilename, 'rb'))}, .format(url=manual_url))
timeout=300,
)
logging.debug(
_('If this upload fails, try manually uploading to {url}').format(
url=manual_url
)
)
r.raise_for_status() r.raise_for_status()
response = r.json() response = r.json()
logging.info(response['verbose_msg'] + " " + response['permalink']) logging.info(response['verbose_msg'] + " " + response['permalink'])
@ -1077,7 +813,8 @@ def push_binary_transparency(git_repo_path, git_remote):
""" """
import git import git
logging.info(_('Pushing binary transparency log to {url}').format(url=git_remote)) logging.info(_('Pushing binary transparency log to {url}')
.format(url=git_remote))
if os.path.isdir(os.path.dirname(git_remote)): if os.path.isdir(os.path.dirname(git_remote)):
# from offline machine to thumbdrive # from offline machine to thumbdrive
@ -1106,47 +843,24 @@ def push_binary_transparency(git_repo_path, git_remote):
origin.set_url(git_remote) origin.set_url(git_remote)
else: else:
origin = gitrepo.create_remote('origin', git_remote) origin = gitrepo.create_remote('origin', git_remote)
for _i in range(3): origin.push(GIT_BRANCH)
try:
origin.push(GIT_BRANCH)
except git.GitCommandError as e:
logging.error(e)
continue
break
else:
raise FDroidException(_("Pushing to remote server failed!"))
def main(): def main():
global config global config, options
parser = ArgumentParser() parser = ArgumentParser()
common.setup_global_opts(parser) common.setup_global_opts(parser)
parser.add_argument( parser.add_argument("-i", "--identity-file", default=None,
"-i", help=_("Specify an identity file to provide to SSH for rsyncing"))
"--identity-file", parser.add_argument("--local-copy-dir", default=None,
default=None, help=_("Specify a local folder to sync the repo to"))
help=_("Specify an identity file to provide to SSH for rsyncing"), parser.add_argument("--no-checksum", action="store_true", default=False,
) help=_("Don't use rsync checksums"))
parser.add_argument( parser.add_argument("--no-keep-git-mirror-archive", action="store_true", default=False,
"--local-copy-dir", help=_("If a git mirror gets to big, allow the archive to be deleted"))
default=None, options = parser.parse_args()
help=_("Specify a local folder to sync the repo to"), config = common.read_config(options)
)
parser.add_argument(
"--no-checksum",
action="store_true",
default=False,
help=_("Don't use rsync checksums"),
)
parser.add_argument(
"--no-keep-git-mirror-archive",
action="store_true",
default=False,
help=_("If a git mirror gets to big, allow the archive to be deleted"),
)
options = common.parse_args(parser)
config = common.read_config()
if config.get('nonstandardwebroot') is True: if config.get('nonstandardwebroot') is True:
standardwebroot = False standardwebroot = False
@ -1165,23 +879,17 @@ def main():
logging.error(_('local_copy_dir must be directory, not a file!')) logging.error(_('local_copy_dir must be directory, not a file!'))
sys.exit(1) sys.exit(1)
if not os.path.exists(os.path.dirname(fdroiddir)): if not os.path.exists(os.path.dirname(fdroiddir)):
logging.error( logging.error(_('The root dir for local_copy_dir "{path}" does not exist!')
_('The root dir for local_copy_dir "{path}" does not exist!').format( .format(path=os.path.dirname(fdroiddir)))
path=os.path.dirname(fdroiddir)
)
)
sys.exit(1) sys.exit(1)
if not os.path.isabs(fdroiddir): if not os.path.isabs(fdroiddir):
logging.error(_('local_copy_dir must be an absolute path!')) logging.error(_('local_copy_dir must be an absolute path!'))
sys.exit(1) sys.exit(1)
repobase = os.path.basename(fdroiddir) repobase = os.path.basename(fdroiddir)
if standardwebroot and repobase != 'fdroid': if standardwebroot and repobase != 'fdroid':
logging.error( logging.error(_('local_copy_dir does not end with "fdroid", '
_( + 'perhaps you meant: "{path}"')
'local_copy_dir does not end with "fdroid", ' .format(path=fdroiddir + '/fdroid'))
+ 'perhaps you meant: "{path}"'
).format(path=fdroiddir + '/fdroid')
)
sys.exit(1) sys.exit(1)
if local_copy_dir[-1] != '/': if local_copy_dir[-1] != '/':
local_copy_dir += '/' local_copy_dir += '/'
@ -1189,20 +897,16 @@ def main():
if not os.path.exists(fdroiddir): if not os.path.exists(fdroiddir):
os.mkdir(fdroiddir) os.mkdir(fdroiddir)
if ( if not config.get('awsbucket') \
not config.get('awsbucket') and not config.get('serverwebroot') \
and not config.get('serverwebroot') and not config.get('servergitmirrors') \
and not config.get('servergitmirrors') and not config.get('androidobservatory') \
and not config.get('androidobservatory') and not config.get('binary_transparency_remote') \
and not config.get('binary_transparency_remote') and not config.get('virustotal_apikey') \
and not config.get('virustotal_apikey') and local_copy_dir is None:
and local_copy_dir is None logging.warning(_('No option set! Edit your config.yml to set at least one of these:')
): + '\nserverwebroot, servergitmirrors, local_copy_dir, awsbucket, '
logging.warning( + 'virustotal_apikey, androidobservatory, or binary_transparency_remote')
_('No option set! Edit your config.yml to set at least one of these:')
+ '\nserverwebroot, servergitmirrors, local_copy_dir, awsbucket, '
+ 'virustotal_apikey, androidobservatory, or binary_transparency_remote'
)
sys.exit(1) sys.exit(1)
repo_sections = ['repo'] repo_sections = ['repo']
@ -1213,10 +917,8 @@ def main():
if config['per_app_repos']: if config['per_app_repos']:
repo_sections += common.get_per_app_repos() repo_sections += common.get_per_app_repos()
if os.path.isdir('unsigned') or ( if os.path.isdir('unsigned') or (local_copy_dir is not None
local_copy_dir is not None and os.path.isdir(os.path.join(local_copy_dir, 'unsigned'))):
and os.path.isdir(os.path.join(local_copy_dir, 'unsigned'))
):
repo_sections.append('unsigned') repo_sections.append('unsigned')
for repo_section in repo_sections: for repo_section in repo_sections:
@ -1233,7 +935,7 @@ def main():
# update_servergitmirrors will take care of multiple mirrors so don't need a foreach # update_servergitmirrors will take care of multiple mirrors so don't need a foreach
update_servergitmirrors(config['servergitmirrors'], repo_section) update_servergitmirrors(config['servergitmirrors'], repo_section)
if config.get('awsbucket'): if config.get('awsbucket'):
update_awsbucket(repo_section, options.verbose, options.quiet) update_awsbucket(repo_section)
if config.get('androidobservatory'): if config.get('androidobservatory'):
upload_to_android_observatory(repo_section) upload_to_android_observatory(repo_section)
if config.get('virustotal_apikey'): if config.get('virustotal_apikey'):
@ -1241,7 +943,8 @@ def main():
binary_transparency_remote = config.get('binary_transparency_remote') binary_transparency_remote = config.get('binary_transparency_remote')
if binary_transparency_remote: if binary_transparency_remote:
push_binary_transparency(BINARY_TRANSPARENCY_DIR, binary_transparency_remote) push_binary_transparency(BINARY_TRANSPARENCY_DIR,
binary_transparency_remote)
common.write_status_json(common.setup_status_output(start_timestamp)) common.write_status_json(common.setup_status_output(start_timestamp))
sys.exit(0) sys.exit(0)

View File

@ -28,6 +28,7 @@ from .common import FDroidPopen
from .exception import FDroidException from .exception import FDroidException
config = None config = None
options = None
start_timestamp = time.gmtime() start_timestamp = time.gmtime()
@ -41,14 +42,14 @@ def status_update_json(signed):
def main(): def main():
global config global config, options
# Parse command line... # Parse command line...
parser = ArgumentParser() parser = ArgumentParser()
common.setup_global_opts(parser) common.setup_global_opts(parser)
common.parse_args(parser) options = parser.parse_args()
config = common.read_config() config = common.read_config(options)
repodirs = ['repo'] repodirs = ['repo']
if config['archive_older'] != 0: if config['archive_older'] != 0:

View File

@ -1,5 +1,4 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
"""Extract application metadata from a source repository."""
# #
# import_subcommand.py - part of the FDroid server tools # import_subcommand.py - part of the FDroid server tools
# Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com # Copyright (C) 2010-13, Ciaran Gultnieks, ciaran@ciarang.com
@ -31,7 +30,6 @@ import yaml
from argparse import ArgumentParser from argparse import ArgumentParser
import logging import logging
from pathlib import Path from pathlib import Path
from typing import Optional
try: try:
from yaml import CSafeLoader as SafeLoader from yaml import CSafeLoader as SafeLoader
@ -45,6 +43,7 @@ from .exception import FDroidException
config = None config = None
options = None
def handle_retree_error_on_windows(function, path, excinfo): def handle_retree_error_on_windows(function, path, excinfo):
@ -54,20 +53,7 @@ def handle_retree_error_on_windows(function, path, excinfo):
function(path) function(path)
def clone_to_tmp_dir(app: metadata.App, rev=None) -> Path: def clone_to_tmp_dir(app):
"""Clone the source repository of an app to a temporary directory for further processing.
Parameters
----------
app
The App instance to clone the source of.
Returns
-------
tmp_dir
The (temporary) directory the apps source has been cloned into.
"""
tmp_dir = Path('tmp') tmp_dir = Path('tmp')
tmp_dir.mkdir(exist_ok=True) tmp_dir.mkdir(exist_ok=True)
@ -76,12 +62,12 @@ def clone_to_tmp_dir(app: metadata.App, rev=None) -> Path:
if tmp_dir.exists(): if tmp_dir.exists():
shutil.rmtree(str(tmp_dir), onerror=handle_retree_error_on_windows) shutil.rmtree(str(tmp_dir), onerror=handle_retree_error_on_windows)
vcs = common.getvcs(app.RepoType, app.Repo, tmp_dir) vcs = common.getvcs(app.RepoType, app.Repo, tmp_dir)
vcs.gotorevision(rev) vcs.gotorevision(options.rev)
return tmp_dir return tmp_dir
def getrepofrompage(url: str) -> tuple[Optional[str], str]: def getrepofrompage(url):
"""Get the repo type and address from the given web page. """Get the repo type and address from the given web page.
The page is scanned in a rather naive manner for 'git clone xxxx', The page is scanned in a rather naive manner for 'git clone xxxx',
@ -89,17 +75,6 @@ def getrepofrompage(url: str) -> tuple[Optional[str], str]:
that's the information we want. Returns repotype, address, or that's the information we want. Returns repotype, address, or
None, reason None, reason
Parameters
----------
url
The url to look for repository information at.
Returns
-------
repotype_or_none
The found repository type or None if an error occured.
address_or_reason
The address to the found repository or the reason if an error occured.
""" """
if not url.startswith('http'): if not url.startswith('http'):
return (None, _('{url} does not start with "http"!'.format(url=url))) return (None, _('{url} does not start with "http"!'.format(url=url)))
@ -145,29 +120,13 @@ def getrepofrompage(url: str) -> tuple[Optional[str], str]:
return (None, _("No information found.") + page) return (None, _("No information found.") + page)
def get_app_from_url(url: str) -> metadata.App: def get_app_from_url(url):
"""Guess basic app metadata from the URL. """Guess basic app metadata from the URL.
The URL must include a network hostname, unless it is an lp:, The URL must include a network hostname, unless it is an lp:,
file:, or git/ssh URL. This throws ValueError on bad URLs to file:, or git/ssh URL. This throws ValueError on bad URLs to
match urlparse(). match urlparse().
Parameters
----------
url
The URL to look to look for app metadata at.
Returns
-------
app
App instance with the found metadata.
Raises
------
:exc:`~fdroidserver.exception.FDroidException`
If the VCS type could not be determined.
:exc:`ValueError`
If the URL is invalid.
""" """
parsed = urllib.parse.urlparse(url) parsed = urllib.parse.urlparse(url)
invalid_url = False invalid_url = False
@ -224,21 +183,7 @@ def get_app_from_url(url: str) -> metadata.App:
def main(): def main():
"""Extract app metadata and write it to a file. global config, options
The behaviour of this function is influenced by the configuration file as
well as command line parameters.
Raises
------
:exc:`~fdroidserver.exception.FDroidException`
If the repository already has local metadata, no URL is specified and
the current directory is not a Git repository, no application ID could
be found, no Gradle project could be found or there is already metadata
for the found application ID.
"""
global config
# Parse command line... # Parse command line...
parser = ArgumentParser() parser = ArgumentParser()
@ -256,10 +201,10 @@ def main():
parser.add_argument("--rev", default=None, parser.add_argument("--rev", default=None,
help=_("Allows a different revision (or git branch) to be specified for the initial import")) help=_("Allows a different revision (or git branch) to be specified for the initial import"))
metadata.add_metadata_arguments(parser) metadata.add_metadata_arguments(parser)
options = common.parse_args(parser) options = parser.parse_args()
metadata.warnings_action = options.W metadata.warnings_action = options.W
config = common.read_config() config = common.read_config(options)
apps = metadata.read_metadata() apps = metadata.read_metadata()
app = None app = None
@ -290,7 +235,7 @@ def main():
write_local_file = True write_local_file = True
elif options.url: elif options.url:
app = get_app_from_url(options.url) app = get_app_from_url(options.url)
tmp_importer_dir = clone_to_tmp_dir(app, options.rev) tmp_importer_dir = clone_to_tmp_dir(app)
git_repo = git.Repo(tmp_importer_dir) git_repo = git.Repo(tmp_importer_dir)
if not options.omit_disable: if not options.omit_disable:

View File

@ -125,13 +125,6 @@ def make(apps, apks, repodir, archive):
make_v2(sortedapps, apks, repodir, repodict, requestsdict, make_v2(sortedapps, apks, repodir, repodict, requestsdict,
fdroid_signing_key_fingerprints, archive) fdroid_signing_key_fingerprints, archive)
make_website(sortedapps, repodir, repodict) make_website(sortedapps, repodir, repodict)
make_altstore(
sortedapps,
apks,
common.config,
repodir,
pretty=common.options.pretty,
)
def _should_file_be_generated(path, magic_string): def _should_file_be_generated(path, magic_string):
@ -202,10 +195,10 @@ def make_website(apps, repodir, repodict):
<kbd> <kbd>
{number_of_apps} {number_of_apps}
</kbd> </kbd>
apps. To add it to your F-Droid app, scan the QR code (click it to enlarge) or use this link: apps. To add it to your F-Droid client, scan the QR code (click it to enlarge) or use this URL:
</p> </p>
<p class="center" style="margin-top:.5em"> <p class="center" style="margin-top:.5em">
<a href="https://fdroid.link/#{link_fingerprinted}"> <a href="{link_fingerprinted}">
<code style="color:#000000;font-weight:bold;"> <code style="color:#000000;font-weight:bold;">
{link} {link}
</code> </code>
@ -647,15 +640,7 @@ def convert_version(version, app, repodir):
if version["versionCode"] > app["CurrentVersionCode"]: if version["versionCode"] > app["CurrentVersionCode"]:
ver[RELEASECHANNELS_CONFIG_NAME] = ["Beta"] ver[RELEASECHANNELS_CONFIG_NAME] = ["Beta"]
builds = app.get("Builds", []) for build in app.get('Builds', []):
if len(builds) > 0 and version["versionCode"] == builds[-1]["versionCode"]:
if "localized" in app:
localized = {k: v["whatsNew"] for k, v in app["localized"].items() if "whatsNew" in v}
if localized:
ver["whatsNew"] = localized
for build in builds:
if build['versionCode'] == version['versionCode'] and "whatsNew" in build: if build['versionCode'] == version['versionCode'] and "whatsNew" in build:
ver["whatsNew"] = build["whatsNew"] ver["whatsNew"] = build["whatsNew"]
break break
@ -1757,100 +1742,3 @@ def get_public_key_from_jar(jar):
public_key_fingerprint = common.get_cert_fingerprint(public_key).replace(' ', '') public_key_fingerprint = common.get_cert_fingerprint(public_key).replace(' ', '')
return public_key, public_key_fingerprint return public_key, public_key_fingerprint
def make_altstore(apps, apks, config, repodir, pretty=False):
"""Assemble altstore-index.json for iOS (.ipa) apps.
builds index files based on:
https://faq.altstore.io/distribute-your-apps/make-a-source
https://faq.altstore.io/distribute-your-apps/updating-apps
"""
if not any(Path(repodir).glob('*.ipa')):
# no IPA files present in repo, nothing to do here, exiting early
return
indent = 2 if pretty else None
# for now alt-store support is english only
for lang in ['en']:
# prepare minimal altstore index
idx = {
'name': config['repo_name'],
"apps": [],
"news": [],
}
# add optional values if available
# idx["subtitle"] F-Droid doesn't have a corresponding value
if config.get("repo_description"):
idx['description'] = config['repo_description']
if (Path(repodir) / 'icons' / config['repo_icon']).exists():
idx['iconURL'] = f"{config['repo_url']}/icons/{config['repo_icon']}"
# idx["headerURL"] F-Droid doesn't have a corresponding value
# idx["website"] F-Droid doesn't have a corresponding value
# idx["patreonURL"] F-Droid doesn't have a corresponding value
# idx["tintColor"] F-Droid doesn't have a corresponding value
# idx["featuredApps"] = [] maybe mappable to F-Droids what's new?
# assemble "apps"
for packageName, app in apps.items():
app_name = app.get("Name") or app.get("AutoName")
icon_url = "{}{}".format(
config['repo_url'],
app.get('iconv2', {}).get(DEFAULT_LOCALE, {}).get('name', ''),
)
screenshot_urls = [
"{}{}".format(config["repo_url"], s["name"])
for s in app.get("screenshots", {})
.get("phone", {})
.get(DEFAULT_LOCALE, {})
]
a = {
"name": app_name,
'bundleIdentifier': packageName,
'developerName': app.get("AuthorName") or f"{app_name} team",
'iconURL': icon_url,
"localizedDescription": "",
'appPermissions': {
"entitlements": set(),
"privacy": {},
},
'versions': [],
}
if app.get('summary'):
a['subtitle'] = app['summary']
# a["tintColor"] F-Droid doesn't have a corresponding value
# a["category"] F-Droid doesn't have a corresponding value
# a['patreon'] F-Droid doesn't have a corresponding value
a["screenshots"] = screenshot_urls
# populate 'versions'
for apk in apks:
last4 = apk.get('apkName', '').lower()[-4:]
if apk['packageName'] == packageName and last4 == '.ipa':
v = {
"version": apk["versionName"],
"date": apk["added"].isoformat(),
"downloadURL": f"{config['repo_url']}/{apk['apkName']}",
"size": apk['size'],
}
# v['localizedDescription'] maybe what's new text?
v["minOSVersion"] = apk["ipa_MinimumOSVersion"]
v["maxOSVersion"] = apk["ipa_DTPlatformVersion"]
# writing this spot here has the effect that always the
# permissions of the latest processed permissions list used
a['appPermissions']['privacy'] = apk['ipa_permissions']
a['appPermissions']['entitlements'] = list(apk['ipa_entitlements'])
a['versions'].append(v)
if len(a['versions']) > 0:
idx['apps'].append(a)
with open(Path(repodir) / 'altstore-index.json', "w", encoding="utf-8") as f:
json.dump(idx, f, indent=indent)

View File

@ -32,6 +32,7 @@ from . import common
from .exception import FDroidException from .exception import FDroidException
config = {} config = {}
options = None
def disable_in_config(key, value): def disable_in_config(key, value):
@ -48,7 +49,7 @@ def disable_in_config(key, value):
def main(): def main():
global config global options, config
# Parse command line... # Parse command line...
parser = ArgumentParser() parser = ArgumentParser()
@ -80,9 +81,7 @@ def main():
default=False, default=False,
help=_("Do not prompt for Android SDK path, just fail"), help=_("Do not prompt for Android SDK path, just fail"),
) )
options = common.parse_args(parser) options = parser.parse_args()
common.set_console_logging(options.verbose)
fdroiddir = os.getcwd() fdroiddir = os.getcwd()
test_config = dict() test_config = dict()
@ -170,7 +169,7 @@ def main():
raise FDroidException('Repository already exists.') raise FDroidException('Repository already exists.')
# now that we have a local config.yml, read configuration... # now that we have a local config.yml, read configuration...
config = common.read_config() config = common.read_config(options)
# the NDK is optional and there may be multiple versions of it, so it's # the NDK is optional and there may be multiple versions of it, so it's
# left for the user to configure # left for the user to configure
@ -281,19 +280,14 @@ def main():
msg += '\n\n' msg += '\n\n'
msg += ( msg += (
_( _(
"""To complete the setup, add your APKs to "%s" '''To complete the setup, add your APKs to "%s"
then run "fdroid update -c; fdroid update". You might also want to edit then run "fdroid update -c; fdroid update". You might also want to edit
"config.yml" to set the URL, repo name, and more. You should also set up "config.yml" to set the URL, repo name, and more. You should also set up
a signing key (a temporary one might have been automatically generated). a signing key (a temporary one might have been automatically generated).
For more info: https://f-droid.org/docs/Setup_an_F-Droid_App_Repo For more info: https://f-droid.org/docs/Setup_an_F-Droid_App_Repo
and https://f-droid.org/docs/Signing_Process""" and https://f-droid.org/docs/Signing_Process'''
) )
% os.path.join(fdroiddir, 'repo') % os.path.join(fdroiddir, 'repo')
) )
if not options.quiet: logging.info(msg)
# normally, INFO is only shown with --verbose, but show this unless --quiet
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.info(msg)
logging.shutdown()

View File

@ -28,6 +28,7 @@ from . import common
from .common import SdkToolsPopen from .common import SdkToolsPopen
from .exception import FDroidException from .exception import FDroidException
options = None
config = None config = None
@ -43,36 +44,20 @@ def devices():
def main(): def main():
global config global options, config
# Parse command line... # Parse command line...
parser = ArgumentParser( parser = ArgumentParser(usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]")
usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]"
)
common.setup_global_opts(parser) common.setup_global_opts(parser)
parser.add_argument( parser.add_argument("appid", nargs='*', help=_("application ID with optional versionCode in the form APPID[:VERCODE]"))
"appid", parser.add_argument("-a", "--all", action="store_true", default=False,
nargs='*', help=_("Install all signed applications available"))
help=_("application ID with optional versionCode in the form APPID[:VERCODE]"), options = parser.parse_args()
)
parser.add_argument(
"-a",
"--all",
action="store_true",
default=False,
help=_("Install all signed applications available"),
)
options = common.parse_args(parser)
common.set_console_logging(options.verbose)
if not options.appid and not options.all: if not options.appid and not options.all:
parser.error( parser.error(_("option %s: If you really want to install all the signed apps, use --all") % "all")
_("option %s: If you really want to install all the signed apps, use --all")
% "all"
)
config = common.read_config() config = common.read_config(options)
output_dir = 'repo' output_dir = 'repo'
if not os.path.isdir(output_dir): if not os.path.isdir(output_dir):
@ -80,12 +65,14 @@ def main():
sys.exit(0) sys.exit(0)
if options.appid: if options.appid:
vercodes = common.read_pkg_args(options.appid, True) vercodes = common.read_pkg_args(options.appid, True)
common.get_metadata_files(vercodes) # only check appids common.get_metadata_files(vercodes) # only check appids
apks = {appid: None for appid in vercodes} apks = {appid: None for appid in vercodes}
# Get the signed APK with the highest vercode # Get the signed APK with the highest vercode
for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))): for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))):
try: try:
appid, vercode = common.publishednameinfo(apkfile) appid, vercode = common.publishednameinfo(apkfile)
except FDroidException: except FDroidException:
@ -101,10 +88,9 @@ def main():
raise FDroidException(_("No signed APK available for %s") % appid) raise FDroidException(_("No signed APK available for %s") % appid)
else: else:
apks = {
common.publishednameinfo(apkfile)[0]: apkfile apks = {common.publishednameinfo(apkfile)[0]: apkfile for apkfile in
for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))) sorted(glob.glob(os.path.join(output_dir, '*.apk')))}
}
for appid, apk in apks.items(): for appid, apk in apks.items():
# Get device list each time to avoid device not found errors # Get device list each time to avoid device not found errors
@ -113,11 +99,7 @@ def main():
raise FDroidException(_("No attached devices found")) raise FDroidException(_("No attached devices found"))
logging.info(_("Installing %s...") % apk) logging.info(_("Installing %s...") % apk)
for dev in devs: for dev in devs:
logging.info( logging.info(_("Installing '{apkfilename}' on {dev}...").format(apkfilename=apk, dev=dev))
_("Installing '{apkfilename}' on {dev}...").format(
apkfilename=apk, dev=dev
)
)
p = SdkToolsPopen(['adb', "-s", dev, "install", apk]) p = SdkToolsPopen(['adb', "-s", dev, "install", apk])
fail = "" fail = ""
for line in p.output.splitlines(): for line in p.output.splitlines():
@ -127,17 +109,11 @@ def main():
continue continue
if fail == "INSTALL_FAILED_ALREADY_EXISTS": if fail == "INSTALL_FAILED_ALREADY_EXISTS":
logging.warning( logging.warning(_('"{apkfilename}" is already installed on {dev}.')
_('"{apkfilename}" is already installed on {dev}.').format( .format(apkfilename=apk, dev=dev))
apkfilename=apk, dev=dev
)
)
else: else:
raise FDroidException( raise FDroidException(_("Failed to install '{apkfilename}' on {dev}: {error}")
_("Failed to install '{apkfilename}' on {dev}: {error}").format( .format(apkfilename=apk, dev=dev, error=fail))
apkfilename=apk, dev=dev, error=fail
)
)
logging.info('\n' + _('Finished')) logging.info('\n' + _('Finished'))

View File

@ -31,6 +31,7 @@ from . import metadata
from . import rewritemeta from . import rewritemeta
config = None config = None
options = None
def enforce_https(domain): def enforce_https(domain):
@ -213,7 +214,7 @@ regex_checks = {
_("Forbidden HTML tags"), _("Forbidden HTML tags"),
), ),
( (
re.compile(r""".*\s+src=["']javascript:.*"""), re.compile(r'''.*\s+src=["']javascript:.*'''),
_("Javascript in HTML src attributes"), _("Javascript in HTML src attributes"),
), ),
], ],
@ -377,7 +378,8 @@ def check_checkupdates_ran(app):
if filling_ucms.match(app.UpdateCheckMode): if filling_ucms.match(app.UpdateCheckMode):
if not app.AutoName and not app.CurrentVersion and app.CurrentVersionCode == 0: if not app.AutoName and not app.CurrentVersion and app.CurrentVersionCode == 0:
yield _( yield _(
"UpdateCheckMode is set but it looks like checkupdates hasn't been run yet." "UpdateCheckMode is set but it looks like"
"checkupdates hasn't been run yet"
) )
@ -458,12 +460,9 @@ def check_builds(app):
"Branch '{branch}' used as commit in srclib '{srclib}'" "Branch '{branch}' used as commit in srclib '{srclib}'"
).format(branch=s, srclib=srclib) ).format(branch=s, srclib=srclib)
else: else:
yield ( yield _(
_('srclibs missing name and/or @') 'srclibs missing name and/or @'
+ ' (srclibs: ' ) + ' (srclibs: ' + srclib + ')'
+ srclib
+ ')'
)
for key in build.keys(): for key in build.keys():
if key not in supported_flags: if key not in supported_flags:
yield _('%s is not an accepted build field') % key yield _('%s is not an accepted build field') % key
@ -502,7 +501,7 @@ def check_files_dir(app):
def check_format(app): def check_format(app):
if common.options.format and not rewritemeta.proper_format(app): if options.format and not rewritemeta.proper_format(app):
yield _("Run rewritemeta to fix formatting") yield _("Run rewritemeta to fix formatting")
@ -724,13 +723,7 @@ def check_updates_ucm_http_aum_pattern(app): # noqa: D403
def check_certificate_pinned_binaries(app): def check_certificate_pinned_binaries(app):
keys = app.get('AllowedAPKSigningKeys') if len(app.get('AllowedAPKSigningKeys')) > 0:
known_keys = common.config.get('apk_signing_key_block_list', [])
if keys:
if known_keys:
for key in keys:
if key in known_keys:
yield _('Known debug key is used in AllowedAPKSigningKeys: ') + key
return return
if app.get('Binaries') is not None: if app.get('Binaries') is not None:
yield _( yield _(
@ -786,7 +779,7 @@ def lint_config(arg):
def main(): def main():
global config global config, options
# Parse command line... # Parse command line...
parser = ArgumentParser() parser = ArgumentParser()
@ -811,10 +804,10 @@ def main():
"appid", nargs='*', help=_("application ID of file to operate on") "appid", nargs='*', help=_("application ID of file to operate on")
) )
metadata.add_metadata_arguments(parser) metadata.add_metadata_arguments(parser)
options = common.parse_args(parser) options = parser.parse_args()
metadata.warnings_action = options.W metadata.warnings_action = options.W
config = common.read_config() config = common.read_config(options)
load_antiFeatures_config() load_antiFeatures_config()
load_categories_config() load_categories_config()

View File

@ -15,9 +15,11 @@ from . import common
from . import index from . import index
from . import update from . import update
options = None
def _run_wget(path, urls, verbose=False):
if verbose: def _run_wget(path, urls):
if options.verbose:
verbose = '--verbose' verbose = '--verbose'
else: else:
verbose = '--no-verbose' verbose = '--no-verbose'
@ -46,6 +48,8 @@ def _run_wget(path, urls, verbose=False):
def main(): def main():
global options
parser = ArgumentParser() parser = ArgumentParser()
common.setup_global_opts(parser) common.setup_global_opts(parser)
parser.add_argument( parser.add_argument(
@ -89,9 +93,7 @@ def main():
parser.add_argument( parser.add_argument(
"--output-dir", default=None, help=_("The directory to write the mirror to") "--output-dir", default=None, help=_("The directory to write the mirror to")
) )
options = common.parse_args(parser) options = parser.parse_args()
common.set_console_logging(options.verbose)
if options.all: if options.all:
options.archive = True options.archive = True
@ -115,7 +117,7 @@ def main():
) )
if fingerprint: if fingerprint:
config = common.read_config() config = common.read_config(options)
if not ('jarsigner' in config or 'apksigner' in config): if not ('jarsigner' in config or 'apksigner' in config):
logging.error( logging.error(
_('Java JDK not found! Install in standard location or set java_paths!') _('Java JDK not found! Install in standard location or set java_paths!')
@ -150,10 +152,10 @@ def main():
if hostname == 'f-droid.org' or ( if hostname == 'f-droid.org' or (
ip is not None and hostname in socket.gethostbyname_ex('f-droid.org')[2] ip is not None and hostname in socket.gethostbyname_ex('f-droid.org')[2]
): ):
logging.error( print(
_( _(
'This command should never be used to mirror f-droid.org! ' 'ERROR: this command should never be used to mirror f-droid.org!\n'
'A full copy requires more than 600GB.' 'A full mirror of f-droid.org requires more than 200GB.'
) )
) )
sys.exit(1) sys.exit(1)
@ -225,7 +227,7 @@ def main():
_append_to_url_path(section, f[:-4] + '.log.gz') _append_to_url_path(section, f[:-4] + '.log.gz')
) )
_run_wget(sectiondir, urls, options.verbose) _run_wget(sectiondir, urls)
for app in data['apps']: for app in data['apps']:
localized = app.get('localized') localized = app.get('localized')
@ -238,7 +240,7 @@ def main():
if f: if f:
filepath_tuple = components + (f,) filepath_tuple = components + (f,)
urls.append(_append_to_url_path(*filepath_tuple)) urls.append(_append_to_url_path(*filepath_tuple))
_run_wget(os.path.join(basedir, *components), urls, options.verbose) _run_wget(os.path.join(basedir, *components), urls)
for k in update.SCREENSHOT_DIRS: for k in update.SCREENSHOT_DIRS:
urls = [] urls = []
filelist = d.get(k) filelist = d.get(k)
@ -247,11 +249,7 @@ def main():
for f in filelist: for f in filelist:
filepath_tuple = components + (f,) filepath_tuple = components + (f,)
urls.append(_append_to_url_path(*filepath_tuple)) urls.append(_append_to_url_path(*filepath_tuple))
_run_wget( _run_wget(os.path.join(basedir, *components), urls)
os.path.join(basedir, *components),
urls,
options.verbose,
)
urls = dict() urls = dict()
for app in data['apps']: for app in data['apps']:
@ -268,12 +266,7 @@ def main():
urls[icondir].append(url) urls[icondir].append(url)
for icondir in icondirs: for icondir in icondirs:
if icondir in urls: _run_wget(os.path.join(basedir, section, icondir), urls[icondir])
_run_wget(
os.path.join(basedir, section, icondir),
urls[icondir],
options.verbose,
)
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -29,20 +29,12 @@ HEADERS = {'User-Agent': 'F-Droid'}
def download_file(url, local_filename=None, dldir='tmp', retries=3, backoff_factor=0.1): def download_file(url, local_filename=None, dldir='tmp', retries=3, backoff_factor=0.1):
"""Try hard to download the file, including retrying on failures.
This has two retry cycles, one inside of the requests session, the
other provided by this function. The requests retry logic applies
to failed DNS lookups, socket connections and connection timeouts,
never to requests where data has made it to the server. This
handles ChunkedEncodingError during transfer in its own retry
loop. This can result in more retries than are specified in the
retries parameter.
"""
filename = urllib.parse.urlparse(url).path.split('/')[-1] filename = urllib.parse.urlparse(url).path.split('/')[-1]
if local_filename is None: if local_filename is None:
local_filename = os.path.join(dldir, filename) local_filename = os.path.join(dldir, filename)
# Retry applies to failed DNS lookups, socket connections and connection
# timeouts, never to requests where data has made it to the server; so we
# handle ChunkedEncodingError during transfer ourselves.
for i in range(retries + 1): for i in range(retries + 1):
if retries: if retries:
max_retries = Retry(total=retries - i, backoff_factor=backoff_factor) max_retries = Retry(total=retries - i, backoff_factor=backoff_factor)

View File

@ -1,5 +1,4 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
"""Set up an app build for a nightly build repo."""
# #
# nightly.py - part of the FDroid server tools # nightly.py - part of the FDroid server tools
# Copyright (C) 2017 Hans-Christoph Steiner <hans@eds.org> # Copyright (C) 2017 Hans-Christoph Steiner <hans@eds.org>
@ -33,7 +32,6 @@ import tempfile
import yaml import yaml
from urllib.parse import urlparse from urllib.parse import urlparse
from argparse import ArgumentParser from argparse import ArgumentParser
from typing import Optional
from . import _ from . import _
from . import common from . import common
@ -50,38 +48,12 @@ DISTINGUISHED_NAME = 'CN=Android Debug,O=Android,C=US'
NIGHTLY = '-nightly' NIGHTLY = '-nightly'
def _get_keystore_secret_var(keystore: str) -> str: def _get_keystore_secret_var(keystore):
"""Get keystore secret as base64.
Parameters
----------
keystore
The path of the keystore.
Returns
-------
base64_secret
The keystore secret as base64 string.
"""
with open(keystore, 'rb') as fp: with open(keystore, 'rb') as fp:
return base64.standard_b64encode(fp.read()).decode('ascii') return base64.standard_b64encode(fp.read()).decode('ascii')
def _ssh_key_from_debug_keystore(keystore: Optional[str] = None) -> str: def _ssh_key_from_debug_keystore(keystore=None):
"""Convert a debug keystore to an SSH private key.
This leaves the original keystore file in place.
Parameters
----------
keystore
The keystore to convert to a SSH private key.
Returns
-------
key_path
The SSH private key file path in the temporary directory.
"""
if keystore is None: if keystore is None:
# set this here so it can be overridden in the tests # set this here so it can be overridden in the tests
# TODO convert this to a class to get rid of this nonsense # TODO convert this to a class to get rid of this nonsense
@ -176,23 +148,7 @@ def _ssh_key_from_debug_keystore(keystore: Optional[str] = None) -> str:
return ssh_private_key_file return ssh_private_key_file
def get_repo_base_url(clone_url: str, repo_git_base: str, force_type: Optional[str] = None) -> str: def get_repo_base_url(clone_url, repo_git_base, force_type=None):
"""Generate the base URL for the F-Droid repository.
Parameters
----------
clone_url
The URL to clone the Git repository.
repo_git_base
The project path of the Git repository at the Git forge.
force_type
The Git forge of the project.
Returns
-------
repo_base_url
The base URL of the F-Droid repository.
"""
if force_type is None: if force_type is None:
force_type = urlparse(clone_url).netloc force_type = urlparse(clone_url).netloc
if force_type == 'gitlab.com': if force_type == 'gitlab.com':
@ -204,17 +160,6 @@ def get_repo_base_url(clone_url: str, repo_git_base: str, force_type: Optional[s
def main(): def main():
"""Deploy to F-Droid repository or generate SSH private key from keystore.
The behaviour of this function is influenced by the configuration file as
well as command line parameters.
Raises
------
:exc:`~fdroidserver.exception.VCSException`
If the nightly Git repository could not be cloned during an attempt to
deploy.
"""
parser = ArgumentParser() parser = ArgumentParser()
common.setup_global_opts(parser) common.setup_global_opts(parser)
parser.add_argument( parser.add_argument(
@ -259,7 +204,8 @@ def main():
help=_("Set maximum releases in repo before older ones are archived"), help=_("Set maximum releases in repo before older ones are archived"),
) )
# TODO add --with-btlog # TODO add --with-btlog
options = common.parse_args(parser) options = parser.parse_args()
common.options = options
# force a tighter umask since this writes private key material # force a tighter umask since this writes private key material
umask = os.umask(0o077) umask = os.umask(0o077)
@ -360,10 +306,7 @@ def main():
readme = ''' readme = '''
# {repo_git_base} # {repo_git_base}
This is an app repository for nightly versions. [![{repo_url}]({repo_url}/icons/icon.png)]({repo_url})
You can use it with the [F-Droid](https://f-droid.org/) Android app.
[![{repo_url}]({repo_url}/icons/icon.png)](https://fdroid.link/#{repo_url})
Last updated: {date}'''.format(repo_git_base=repo_git_base, Last updated: {date}'''.format(repo_git_base=repo_git_base,
repo_url=repo_url, repo_url=repo_url,
@ -427,7 +370,7 @@ Last updated: {date}'''.format(repo_git_base=repo_git_base,
with open('config.yml', 'w') as fp: with open('config.yml', 'w') as fp:
yaml.dump(config, fp, default_flow_style=False) yaml.dump(config, fp, default_flow_style=False)
os.chmod('config.yml', 0o600) os.chmod('config.yml', 0o600)
config = common.read_config() config = common.read_config(options)
common.assert_config_keystore(config) common.assert_config_keystore(config)
for root, dirs, files in os.walk(cibase): for root, dirs, files in os.walk(cibase):

View File

@ -18,16 +18,6 @@
# You should have received a copy of the GNU Affero General Public License # You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
"""Sign APKs using keys or via reproducible builds signature copying.
This command takes unsigned APKs and signs them. It looks for
unsigned APKs in the unsigned/ directory and puts successfully signed
APKs into the repo/ directory. The default is to run in a kind of
batch mode, where it will only quit on certain kinds of errors. It
mostly reports success by moving an APK from unsigned/ to repo/
"""
import sys import sys
import os import os
import re import re
@ -49,6 +39,7 @@ from .common import FDroidPopen
from .exception import BuildException, FDroidException from .exception import BuildException, FDroidException
config = None config = None
options = None
start_timestamp = time.gmtime() start_timestamp = time.gmtime()
@ -268,30 +259,23 @@ def create_key_if_not_existing(keyalias):
def main(): def main():
global config global config, options
# Parse command line... # Parse command line...
parser = ArgumentParser( parser = ArgumentParser(
usage="%(prog)s [options] " "[APPID[:VERCODE] [APPID[:VERCODE] ...]]" usage="%(prog)s [options] " "[APPID[:VERCODE] [APPID[:VERCODE] ...]]"
) )
common.setup_global_opts(parser) common.setup_global_opts(parser)
parser.add_argument(
"-e",
"--error-on-failed",
action="store_true",
default=False,
help=_("When signing or verifying fails, exit with an error code."),
)
parser.add_argument( parser.add_argument(
"appid", "appid",
nargs='*', nargs='*',
help=_("application ID with optional versionCode in the form APPID[:VERCODE]"), help=_("application ID with optional versionCode in the form APPID[:VERCODE]"),
) )
metadata.add_metadata_arguments(parser) metadata.add_metadata_arguments(parser)
options = common.parse_args(parser) options = parser.parse_args()
metadata.warnings_action = options.W metadata.warnings_action = options.W
config = common.read_config() config = common.read_config(options)
if not ('jarsigner' in config and 'keytool' in config): if not ('jarsigner' in config and 'keytool' in config):
logging.critical( logging.critical(
@ -338,7 +322,6 @@ def main():
).format(len(allapps), len(allaliases)) ).format(len(allapps), len(allaliases))
) )
failed = 0
# Process any APKs or ZIPs that are waiting to be signed... # Process any APKs or ZIPs that are waiting to be signed...
for apkfile in sorted( for apkfile in sorted(
glob.glob(os.path.join(unsigned_dir, '*.apk')) glob.glob(os.path.join(unsigned_dir, '*.apk'))
@ -381,14 +364,12 @@ def main():
if not os.path.isfile(srcapk): if not os.path.isfile(srcapk):
logging.error("...reference binary missing - publish skipped: " logging.error("...reference binary missing - publish skipped: "
"'{refpath}'".format(refpath=srcapk)) "'{refpath}'".format(refpath=srcapk))
failed += 1
else: else:
# Compare our unsigned one with the downloaded one... # Compare our unsigned one with the downloaded one...
compare_result = common.verify_apks(srcapk, apkfile, tmp_dir) compare_result = common.verify_apks(srcapk, apkfile, tmp_dir)
if compare_result: if compare_result:
logging.error("...verification failed - publish skipped : " logging.error("...verification failed - publish skipped : "
"{result}".format(result=compare_result)) "{result}".format(result=compare_result))
failed += 1
else: else:
# Success! So move the downloaded file to the repo, and remove # Success! So move the downloaded file to the repo, and remove
# our built version. # our built version.
@ -434,7 +415,6 @@ def main():
os.remove(devsignedtmp) os.remove(devsignedtmp)
logging.error('...verification failed - skipping: %s', devsigned) logging.error('...verification failed - skipping: %s', devsigned)
skipsigning = True skipsigning = True
failed += 1
# Now we sign with the F-Droid key. # Now we sign with the F-Droid key.
if not skipsigning: if not skipsigning:
@ -464,11 +444,6 @@ def main():
status_update_json(generated_keys, signed_apks) status_update_json(generated_keys, signed_apks)
logging.info('published list signing-key fingerprints') logging.info('published list signing-key fingerprints')
if failed:
logging.error(_('%d APKs failed to be signed or verified!') % failed)
if options.error_on_failed:
sys.exit(failed)
if __name__ == "__main__": if __name__ == "__main__":
main() main()

View File

@ -20,6 +20,8 @@ from argparse import ArgumentParser
from . import common from . import common
from . import metadata from . import metadata
options = None
def main(): def main():
parser = ArgumentParser() parser = ArgumentParser()
@ -27,7 +29,7 @@ def main():
metadata.add_metadata_arguments(parser) metadata.add_metadata_arguments(parser)
options = parser.parse_args() options = parser.parse_args()
metadata.warnings_action = options.W metadata.warnings_action = options.W
common.read_config() common.read_config(None)
metadata.read_metadata() metadata.read_metadata()

View File

@ -29,6 +29,7 @@ from . import common
from . import metadata from . import metadata
config = None config = None
options = None
def proper_format(app): def proper_format(app):
@ -61,7 +62,7 @@ def remove_blank_flags_from_builds(builds):
def main(): def main():
global config global config, options
parser = ArgumentParser() parser = ArgumentParser()
common.setup_global_opts(parser) common.setup_global_opts(parser)
@ -76,10 +77,10 @@ def main():
"appid", nargs='*', help=_("application ID of file to operate on") "appid", nargs='*', help=_("application ID of file to operate on")
) )
metadata.add_metadata_arguments(parser) metadata.add_metadata_arguments(parser)
options = common.parse_args(parser) options = parser.parse_args()
metadata.warnings_action = options.W metadata.warnings_action = options.W
config = common.read_config() config = common.read_config(options)
# Get all apps... # Get all apps...
allapps = metadata.read_metadata(options.appid) allapps = metadata.read_metadata(options.appid)

View File

@ -40,6 +40,8 @@ from . import metadata
from .exception import BuildException, VCSException, ConfigurationException from .exception import BuildException, VCSException, ConfigurationException
from . import scanner from . import scanner
options = None
@dataclass @dataclass
class MessageStore: class MessageStore:
@ -48,7 +50,7 @@ class MessageStore:
errors: list = field(default_factory=list) errors: list = field(default_factory=list)
MAVEN_URL_REGEX = re.compile(r"""\smaven\s*(?:{.*?(?:setUrl|url)|\(\s*(?:url)?)\s*=?\s*(?:uri|URI|Uri\.create)?\(?\s*["']?([^\s"']+)["']?[^})]*[)}]""", MAVEN_URL_REGEX = re.compile(r"""\smaven\s*(?:{.*?(?:setUrl|url)|\((?:url)?)\s*=?\s*(?:uri|Uri\.create\()?\(?\s*["']?([^\s"']+)["']?[^})]*[)}]""",
re.DOTALL) re.DOTALL)
@ -60,14 +62,13 @@ class ExitCode(IntEnum):
def get_gradle_compile_commands(build): def get_gradle_compile_commands(build):
compileCommands = ['api', compileCommands = ['compile',
'apk',
'classpath',
'compile',
'compileOnly',
'id',
'implementation',
'provided', 'provided',
'apk',
'implementation',
'classpath',
'api',
'compileOnly',
'runtimeOnly'] 'runtimeOnly']
buildTypes = ['', 'release'] buildTypes = ['', 'release']
flavors = [''] flavors = ['']
@ -331,9 +332,8 @@ class ScannerTool:
self.scanner_data_lookup() self.scanner_data_lookup()
options = common.get_options() config = common.get_config()
options_refresh_scanner = options and options.refresh_scanner if (options and options.refresh_scanner) or config.get('refresh_scanner'):
if options_refresh_scanner or common.get_config().get('refresh_scanner'):
self.refresh() self.refresh()
self.load() self.load()
@ -589,7 +589,6 @@ def scan_source(build_dir, build=metadata.Build(), json_per_build=None):
------- -------
0 if the problem was ignored/deleted/is only a warning, 1 otherwise 0 if the problem was ignored/deleted/is only a warning, 1 otherwise
""" """
options = common.get_options()
if toignore(path_in_build_dir): if toignore(path_in_build_dir):
return ignoreproblem(what, path_in_build_dir, json_per_build) return ignoreproblem(what, path_in_build_dir, json_per_build)
if todelete(path_in_build_dir): if todelete(path_in_build_dir):
@ -777,6 +776,9 @@ def scan_source(build_dir, build=metadata.Build(), json_per_build=None):
def main(): def main():
global options
# Parse command line...
parser = ArgumentParser( parser = ArgumentParser(
usage="%(prog)s [options] [(APPID[:VERCODE] | path/to.apk) ...]" usage="%(prog)s [options] [(APPID[:VERCODE] | path/to.apk) ...]"
) )
@ -791,7 +793,7 @@ def main():
parser.add_argument("-e", "--exit-code", action="store_true", default=False, parser.add_argument("-e", "--exit-code", action="store_true", default=False,
help=_("Exit with a non-zero code if problems were found")) help=_("Exit with a non-zero code if problems were found"))
metadata.add_metadata_arguments(parser) metadata.add_metadata_arguments(parser)
options = common.parse_args(parser) options = parser.parse_args()
metadata.warnings_action = options.W metadata.warnings_action = options.W
json_output = dict() json_output = dict()
@ -802,7 +804,7 @@ def main():
logging.getLogger().setLevel(logging.ERROR) logging.getLogger().setLevel(logging.ERROR)
# initialize/load configuration values # initialize/load configuration values
common.get_config() common.get_config(opts=options)
probcount = 0 probcount = 0

View File

@ -103,8 +103,9 @@ def main():
"APK", nargs='*', help=_("signed APK, either a file-path or HTTPS URL.") "APK", nargs='*', help=_("signed APK, either a file-path or HTTPS URL.")
) )
parser.add_argument("--no-check-https", action="store_true", default=False) parser.add_argument("--no-check-https", action="store_true", default=False)
options = common.parse_args(parser) options = parser.parse_args()
common.set_console_logging(options.verbose)
common.read_config() # Read config.py...
common.read_config(options)
extract(options) extract(options)

View File

@ -29,6 +29,7 @@ from . import metadata
from .exception import FDroidException from .exception import FDroidException
config = None config = None
options = None
start_timestamp = time.gmtime() start_timestamp = time.gmtime()
@ -174,13 +175,13 @@ def status_update_json(signed):
def main(): def main():
global config global config, options
parser = ArgumentParser() parser = ArgumentParser()
common.setup_global_opts(parser) common.setup_global_opts(parser)
common.parse_args(parser) options = parser.parse_args()
config = common.read_config() config = common.read_config(options)
if 'jarsigner' not in config: if 'jarsigner' not in config:
raise FDroidException( raise FDroidException(

View File

@ -34,7 +34,6 @@ import json
import time import time
import yaml import yaml
import copy import copy
import asn1crypto.cms
import defusedxml.ElementTree as ElementTree import defusedxml.ElementTree as ElementTree
from datetime import datetime, timezone from datetime import datetime, timezone
from argparse import ArgumentParser from argparse import ArgumentParser
@ -545,105 +544,25 @@ def version_string_to_int(version):
return major * 10**12 + minor * 10**6 + patch return major * 10**12 + minor * 10**6 + patch
# iOS app permissions, source:
# https://developer.apple.com/documentation/bundleresources/information_property_list/protected_resources
IPA_PERMISSIONS = [
"NSBluetoothAlwaysUsageDescription",
"NSBluetoothPeripheralUsageDescription",
"NSCalendarsFullAccessUsageDescription",
"NSCalendarsWriteOnlyAccessUsageDescription",
"NSRemindersFullAccessUsageDescription",
"NSCameraUsageDescription",
"NSMicrophoneUsageDescription",
"NSContactsUsageDescription",
"NSFaceIDUsageDescription",
"NSDesktopFolderUsageDescription",
"NSDocumentsFolderUsageDescription",
"NSDownloadsFolderUsageDescription",
"NSNetworkVolumesUsageDescription",
"NSNetworkVolumesUsageDescription",
"NSRemovableVolumesUsageDescription",
"NSRemovableVolumesUsageDescription",
"NSFileProviderDomainUsageDescription",
"NSGKFriendListUsageDescription",
"NSHealthClinicalHealthRecordsShareUsageDescription",
"NSHealthShareUsageDescription",
"NSHealthUpdateUsageDescription",
"NSHomeKitUsageDescription",
"NSLocationAlwaysAndWhenInUseUsageDescription",
"NSLocationUsageDescription",
"NSLocationWhenInUseUsageDescription",
"NSLocationAlwaysUsageDescription",
"NSAppleMusicUsageDescription",
"NSMotionUsageDescription",
"NSFallDetectionUsageDescription",
"NSLocalNetworkUsageDescription",
"NSNearbyInteractionUsageDescription",
"NSNearbyInteractionAllowOnceUsageDescription",
"NFCReaderUsageDescription",
"NSPhotoLibraryAddUsageDescription",
"NSPhotoLibraryUsageDescription",
"NSAppDataUsageDescription",
"NSUserTrackingUsageDescription",
"NSAppleEventsUsageDescription",
"NSSystemAdministrationUsageDescription",
"NSSensorKitUsageDescription",
"NSSiriUsageDescription",
"NSSpeechRecognitionUsageDescription",
"NSVideoSubscriberAccountUsageDescription",
"NSWorldSensingUsageDescription",
"NSHandsTrackingUsageDescription",
"NSIdentityUsageDescription",
"NSCalendarsUsageDescription",
"NSRemindersUsageDescription",
]
def parse_ipa(ipa_path, file_size, sha256): def parse_ipa(ipa_path, file_size, sha256):
import biplist from biplist import readPlist
ipa = { ipa = {
"apkName": os.path.basename(ipa_path), "apkName": os.path.basename(ipa_path),
"hash": sha256, "hash": sha256,
"hashType": "sha256", "hashType": "sha256",
"size": file_size, "size": file_size,
"ipa_entitlements": set(),
"ipa_permissions": {},
} }
with zipfile.ZipFile(ipa_path) as ipa_zip: with zipfile.ZipFile(ipa_path) as ipa_zip:
for info in ipa_zip.infolist(): for info in ipa_zip.infolist():
if re.match("Payload/[^/]*.app/Info.plist", info.filename): if re.match("Payload/[^/]*.app/Info.plist", info.filename):
with ipa_zip.open(info) as plist_file: with ipa_zip.open(info) as plist_file:
plist = biplist.readPlist(plist_file) plist = readPlist(plist_file)
ipa["name"] = plist['CFBundleName']
ipa["packageName"] = plist["CFBundleIdentifier"] ipa["packageName"] = plist["CFBundleIdentifier"]
# https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring # https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleshortversionstring
ipa["versionCode"] = version_string_to_int(plist["CFBundleShortVersionString"]) ipa["versionCode"] = version_string_to_int(plist["CFBundleShortVersionString"])
ipa["versionName"] = plist["CFBundleShortVersionString"] ipa["versionName"] = plist["CFBundleShortVersionString"]
ipa["ipa_MinimumOSVersion"] = plist['MinimumOSVersion']
ipa["ipa_DTPlatformVersion"] = plist['DTPlatformVersion']
for ipap in IPA_PERMISSIONS:
if ipap in plist:
ipa["ipa_permissions"][ipap] = str(plist[ipap])
if info.filename.endswith("/embedded.mobileprovision"):
print("parsing", info.filename)
with ipa_zip.open(info) as mopro_file:
mopro_content_info = asn1crypto.cms.ContentInfo.load(
mopro_file.read()
)
mopro_payload_info = mopro_content_info['content']
mopro_payload = mopro_payload_info['encap_content_info'][
'content'
].native
mopro = biplist.readPlistFromString(mopro_payload)
# https://faq.altstore.io/distribute-your-apps/make-a-source#entitlements-array-of-strings
for entitlement in mopro.get('Entitlements', {}).keys():
if entitlement not in [
"com.app.developer.team-identifier",
'application-identifier'
]:
ipa["ipa_entitlements"].add(entitlement)
return ipa return ipa
@ -673,7 +592,8 @@ def scan_repo_for_ipas(apkcache, repodir, knownapks):
file_size = os.stat(ipa_path).st_size file_size = os.stat(ipa_path).st_size
if file_size == 0: if file_size == 0:
raise FDroidException(_('{path} is zero size!').format(path=ipa_path)) raise FDroidException(_('{path} is zero size!')
.format(path=ipa_path))
sha256 = common.sha256sum(ipa_path) sha256 = common.sha256sum(ipa_path)
ipa = apkcache.get(ipa_name, {}) ipa = apkcache.get(ipa_name, {})
@ -935,15 +855,7 @@ def insert_funding_yml_donation_links(apps):
if 'open_collective' in data: if 'open_collective' in data:
del data['open_collective'] del data['open_collective']
# this tuple provides a preference ordering # this tuple provides a preference ordering
for k in ( for k in ('custom', 'github', 'patreon', 'community_bridge', 'ko_fi', 'issuehunt'):
'custom',
'github',
'patreon',
'community_bridge',
'ko_fi',
'issuehunt',
'buy_me_a_coffee'
):
v = data.get(k) v = data.get(k)
if not v: if not v:
continue continue
@ -952,10 +864,10 @@ def insert_funding_yml_donation_links(apps):
if s: if s:
app['Donate'] = s app['Donate'] = s
break break
elif k in ('community_bridge', 'lfx_crowdfunding'): elif k == 'community_bridge':
s = sanitize_funding_yml_name(v) s = sanitize_funding_yml_name(v)
if s: if s:
app['Donate'] = 'https://crowdfunding.lfx.linuxfoundation.org/projects/' + s app['Donate'] = 'https://funding.communitybridge.org/projects/' + s
break break
elif k == 'github': elif k == 'github':
s = sanitize_funding_yml_name(v) s = sanitize_funding_yml_name(v)
@ -977,16 +889,6 @@ def insert_funding_yml_donation_links(apps):
if s: if s:
app['Donate'] = 'https://patreon.com/' + s app['Donate'] = 'https://patreon.com/' + s
break break
elif k == 'buy_me_a_coffee':
s = sanitize_funding_yml_name(v)
if s:
app['Donate'] = 'https://www.buymeacoffee.com/' + s
break
elif k == 'polar':
s = sanitize_funding_yml_name(v)
if s:
app['Donate'] = 'https://polar.sh/' + s
break
def copy_triple_t_store_metadata(apps): def copy_triple_t_store_metadata(apps):
@ -1234,9 +1136,6 @@ def insert_localized_app_metadata(apps):
if base not in apps[packageName] or not isinstance(apps[packageName][base], collections.OrderedDict): if base not in apps[packageName] or not isinstance(apps[packageName][base], collections.OrderedDict):
apps[packageName][base] = collections.OrderedDict() apps[packageName][base] = collections.OrderedDict()
apps[packageName][base][locale] = common.file_entry(dst) apps[packageName][base][locale] = common.file_entry(dst)
# copy screenshots from local source code checkout into wellknown
# location in repo directory
for d in dirs: for d in dirs:
if d in SCREENSHOT_DIRS: if d in SCREENSHOT_DIRS:
if locale == 'images': if locale == 'images':
@ -1249,8 +1148,6 @@ def insert_localized_app_metadata(apps):
os.makedirs(screenshotdestdir, mode=0o755, exist_ok=True) os.makedirs(screenshotdestdir, mode=0o755, exist_ok=True)
_strip_and_copy_image(f, screenshotdestdir) _strip_and_copy_image(f, screenshotdestdir)
def ingest_screenshots_from_repo_dir(apps):
repodirs = sorted(glob.glob(os.path.join('repo', '[A-Za-z]*', '[a-z][a-z]*'))) repodirs = sorted(glob.glob(os.path.join('repo', '[A-Za-z]*', '[a-z][a-z]*')))
for d in repodirs: for d in repodirs:
if not os.path.isdir(d): if not os.path.isdir(d):
@ -1311,144 +1208,6 @@ def ingest_screenshots_from_repo_dir(apps):
logging.warning(_('Unsupported graphics file found: {path}').format(path=f)) logging.warning(_('Unsupported graphics file found: {path}').format(path=f))
LANG_CODE = re.compile(r'^[a-z]{2}([-_][A-Z][a-zA-Z]{1,3})?$')
FASTLANE_IOS_MAP = {
"name.txt": 'name',
"subtitle.txt": 'summary',
"description.txt": 'description',
}
def parse_ios_screenshot_name(path):
"""
Infer type and categorization info from screenshot file name.
This is not really an exact algorithm, it's based on filenames observed in
the wild.
"""
s = path.stem.split('@')
if len(s) >= 2:
if "iphone" in s[0].lower():
return ("phoneScreenshots", s[0].strip(), ('@'.join(s[1:])).split('-')[0].strip())
elif "ipad" in s[0].lower():
return ("tenInchScreenshots", s[0].strip(), ('@'.join(s[1:])).split('-')[0].strip())
else:
fragments = path.stem.lower().split("_")
device = "unknown"
os = "unknown"
screenshot_type = "phoneScreenshots"
for f in fragments:
if "iphone" in f:
device = f
continue
if "ipad" in f:
screenshot_type = "tenInchScreenshots"
device = f
if "ios" in f:
os = f
return (screenshot_type, device, os)
return ("phoneScreenshots", 'unknown', 'unknown')
def discover_ios_screenshots(fastlane_dir):
"""Traverse git checkouts in build dir, search for fastlane-screenshots and put findings into a dict."""
fastlane_screenshot_dir = fastlane_dir / 'screenshots'
screenshots = {}
if fastlane_screenshot_dir.is_dir():
for lang_sdir in fastlane_screenshot_dir.iterdir():
locale = lang_sdir.name
m = LANG_CODE.match(locale)
if m:
screenshots[locale] = {}
fifo_idevice = {}
fifo_ios = {}
for screenshot in lang_sdir.iterdir():
if screenshot.suffix[1:] in ALLOWED_EXTENSIONS:
screenshot_type, idevice_name, ios_name = parse_ios_screenshot_name(screenshot)
# since there is no easy mapping here, we're just
# resorting to fifo here, so ieg. if there's 2
# screenshots categorized for more than one
# iPhone/iOS combinations we just remember the
# first combination, use them as screenshots in
# F-Droid and ignore all other screenshots, for
# this screenshot type
if not fifo_idevice.get(screenshot_type):
fifo_idevice[screenshot_type] = idevice_name
fifo_ios[screenshot_type] = ios_name
if fifo_idevice[screenshot_type] == idevice_name and fifo_ios[screenshot_type] == ios_name:
if screenshot_type not in screenshots[locale]:
screenshots[locale][screenshot_type] = []
screenshots[locale][screenshot_type].append(screenshot)
# sort all found screenshots alphanumerically
for locale, translated_screenshots in screenshots.items():
for device in translated_screenshots.keys():
translated_screenshots[device].sort()
return screenshots
def copy_ios_screenshots_to_repo(screenshots, package_name):
for locale, translated_screenshots in screenshots.items():
for device, translated_device_screenshots in translated_screenshots.items():
dest_dir = Path('repo') / package_name / locale / device
dest_dir.mkdir(mode=0o755, parents=True, exist_ok=True)
for path in translated_device_screenshots:
dest = dest_dir / (path.name.replace(" ", "_").replace("\t", "_"))
fdroidserver.update._strip_and_copy_image(str(path), str(dest))
def insert_localized_ios_app_metadata(apps_with_packages):
if not any(Path('repo').glob('*.ipa')):
# no IPA files present in repo, nothing to do here, exiting early
return
for package_name, app in apps_with_packages.items():
if not any(Path('repo').glob(f'{package_name}*.ipa')):
# couldn't find any IPA files for this package_name
# so we don't have to look for fastlane data
continue
fastlane_dir = Path('build', package_name, 'fastlane')
fastlane_meta_dir = (fastlane_dir / "metadata")
if fastlane_meta_dir.is_dir():
for lang_dir in fastlane_meta_dir.iterdir():
locale = lang_dir.name
m = LANG_CODE.match(locale)
if m:
for metadata_file in (lang_dir).iterdir():
key = FASTLANE_IOS_MAP.get(metadata_file.name)
if key:
fdroidserver.update._set_localized_text_entry(
app, locale, key, metadata_file
)
screenshots = fdroidserver.update.discover_ios_screenshots(fastlane_dir)
fdroidserver.update.copy_ios_screenshots_to_repo(screenshots, package_name)
# lookup icons, copy them and put them into app
icon_path = _get_ipa_icon(Path('build') / package_name)
icon_dest = Path('repo') / package_name / 'icon.png' # for now just assume png
icon_stat = os.stat(icon_path)
app['iconv2'] = {
DEFAULT_LOCALE: {
'name': str(icon_dest).lstrip('repo'),
'sha256': common.sha256sum(icon_dest),
'size': icon_stat.st_size,
}
}
if not icon_dest.exists():
icon_dest.parent.mkdir(parents=True, exist_ok=True)
shutil.copy(icon_path, icon_dest)
def scan_repo_files(apkcache, repodir, knownapks, use_date_from_file=False): def scan_repo_files(apkcache, repodir, knownapks, use_date_from_file=False):
"""Scan a repo for all files with an extension except APK/OBB/IPA. """Scan a repo for all files with an extension except APK/OBB/IPA.
@ -1645,60 +1404,6 @@ def _get_apk_icons_src(apkfile, icon_name):
return icons_src return icons_src
def _get_ipa_icon(src_dir):
"""Search source directory of an IPA project for the app icon."""
# parse app icon name from project config file
src_dir = Path(src_dir)
prj = next(src_dir.glob("**/project.pbxproj"), None)
if not prj or not prj.exists():
return
icon_name = _parse_from_pbxproj(prj, 'ASSETCATALOG_COMPILER_APPICON_NAME')
if not icon_name:
return
icon_dir = next(src_dir.glob(f'**/{icon_name}.appiconset'), None)
if not icon_dir:
return
with open(icon_dir / "Contents.json") as f:
cntnt = json.load(f)
fname = None
fsize = 0
for image in cntnt['images']:
s = float(image.get("size", "0x0").split("x")[0])
if image.get('scale') == "1x" and s > fsize and s <= 128:
fname = image['filename']
fsize = s
return str(icon_dir / fname)
def _parse_from_pbxproj(pbxproj_path, key):
"""Parse values from apple project files.
This is a naive regex based parser. Should this proofe to unreliable we
might want to consider using a dedicated pbxproj parser:
https://pypi.org/project/pbxproj/
e.g. when looking for key 'ASSETCATALOG_COMPILER_APPICON_NAME'
This function will extract 'MyIcon' from if the provided file
contains this line:
ASSETCATALOG_COMPILER_APPICON_NAME = MyIcon;
returns None if parsing for that value didn't yield anything
"""
r = re.compile(f"\\s*{key}\\s*=\\s*(?P<value>[a-zA-Z0-9-_]+)\\s*;\\s*")
with open(pbxproj_path, 'r', encoding='utf-8') as f:
for line in f.readlines():
m = r.match(line)
if m:
return m.group("value")
return None
def _sanitize_sdk_version(value): def _sanitize_sdk_version(value):
"""Sanitize the raw values from androguard to handle bad values. """Sanitize the raw values from androguard to handle bad values.
@ -1722,7 +1427,8 @@ def _sanitize_sdk_version(value):
def scan_apk_androguard(apk, apkfile): def scan_apk_androguard(apk, apkfile):
try: try:
apkobject = common.get_androguard_APK(apkfile) from androguard.core.bytecodes.apk import APK
apkobject = APK(apkfile)
if apkobject.is_valid_APK(): if apkobject.is_valid_APK():
arsc = apkobject.get_android_resources() arsc = apkobject.get_android_resources()
else: else:
@ -1738,7 +1444,7 @@ def scan_apk_androguard(apk, apkfile):
logging.error(_("Failed to get APK information, skipping {path}") logging.error(_("Failed to get APK information, skipping {path}")
.format(path=apkfile)) .format(path=apkfile))
raise BuildException(_("Invalid APK")) raise BuildException(_("Invalid APK"))
except (FileNotFoundError, ValueError, zipfile.BadZipFile) as e: except (FileNotFoundError, zipfile.BadZipFile) as e:
logging.error(_("Could not open APK {path} for analysis: ").format(path=apkfile) logging.error(_("Could not open APK {path} for analysis: ").format(path=apkfile)
+ str(e)) + str(e))
raise BuildException(_("Invalid APK")) from e raise BuildException(_("Invalid APK")) from e
@ -1778,7 +1484,7 @@ def scan_apk_androguard(apk, apkfile):
if maxSdkVersion is not None: if maxSdkVersion is not None:
apk['maxSdkVersion'] = maxSdkVersion apk['maxSdkVersion'] = maxSdkVersion
icon_id_str = apkobject.get_attribute_value("application", "icon") icon_id_str = apkobject.get_element("application", "icon")
if icon_id_str: if icon_id_str:
try: try:
icon_id = int(icon_id_str.replace("@", "0x"), 16) icon_id = int(icon_id_str.replace("@", "0x"), 16)
@ -1910,10 +1616,8 @@ def process_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk=Fal
return True, None, False return True, None, False
# Check for debuggable apks... # Check for debuggable apks...
if common.is_debuggable_or_testOnly(apkfile): if common.is_apk_and_debuggable(apkfile):
logging.warning( logging.warning('{0} is set to android:debuggable="true"'.format(apkfile))
"%s: debuggable or testOnly set in AndroidManifest.xml" % apkfile
)
if options.rename_apks: if options.rename_apks:
n = apk['packageName'] + '_' + str(apk['versionCode']) + '.apk' n = apk['packageName'] + '_' + str(apk['versionCode']) + '.apk'
@ -2534,8 +2238,6 @@ def prepare_apps(apps, apks, repodir):
translate_per_build_anti_features(apps_with_packages, apks) translate_per_build_anti_features(apps_with_packages, apks)
if repodir == 'repo': if repodir == 'repo':
insert_localized_app_metadata(apps_with_packages) insert_localized_app_metadata(apps_with_packages)
insert_localized_ios_app_metadata(apps_with_packages)
ingest_screenshots_from_repo_dir(apps_with_packages)
insert_missing_app_names_from_apks(apps_with_packages, apks) insert_missing_app_names_from_apks(apps_with_packages, apks)
return apps_with_packages return apps_with_packages
@ -2574,12 +2276,13 @@ def main():
parser.add_argument("--allow-disabled-algorithms", action="store_true", default=False, parser.add_argument("--allow-disabled-algorithms", action="store_true", default=False,
help=_("Include APKs that are signed with disabled algorithms like MD5")) help=_("Include APKs that are signed with disabled algorithms like MD5"))
metadata.add_metadata_arguments(parser) metadata.add_metadata_arguments(parser)
options = common.parse_args(parser) options = parser.parse_args()
metadata.warnings_action = options.W metadata.warnings_action = options.W
config = common.read_config() config = common.read_config(options)
common.setup_status_output(start_timestamp) common.setup_status_output(start_timestamp)
common.use_androguard()
if not (('jarsigner' in config or 'apksigner' in config) if not (('jarsigner' in config or 'apksigner' in config)
and 'keytool' in config): and 'keytool' in config):
raise FDroidException(_('Java JDK not found! Install in standard location or set java_paths!')) raise FDroidException(_('Java JDK not found! Install in standard location or set java_paths!'))

View File

@ -30,6 +30,7 @@ from . import common
from . import net from . import net
from .exception import FDroidException from .exception import FDroidException
options = None
config = None config = None
@ -145,7 +146,7 @@ def write_json_report(url, remote_apk, unsigned_apk, compare_result):
def main(): def main():
global config global options, config
# Parse command line... # Parse command line...
parser = ArgumentParser( parser = ArgumentParser(
@ -169,9 +170,9 @@ def main():
default=False, default=False,
help=_("Output JSON report to file named after APK."), help=_("Output JSON report to file named after APK."),
) )
options = common.parse_args(parser) options = parser.parse_args()
config = common.read_config() config = common.read_config(options)
tmp_dir = 'tmp' tmp_dir = 'tmp'
if not os.path.isdir(tmp_dir): if not os.path.isdir(tmp_dir):

View File

@ -199,7 +199,6 @@ get_sha() {
'8.4') echo '3e1af3ae886920c3ac87f7a91f816c0c7c436f276a6eefdb3da152100fef72ae' ;; '8.4') echo '3e1af3ae886920c3ac87f7a91f816c0c7c436f276a6eefdb3da152100fef72ae' ;;
'8.5') echo '9d926787066a081739e8200858338b4a69e837c3a821a33aca9db09dd4a41026' ;; '8.5') echo '9d926787066a081739e8200858338b4a69e837c3a821a33aca9db09dd4a41026' ;;
'8.6') echo '9631d53cf3e74bfa726893aee1f8994fee4e060c401335946dba2156f440f24c' ;; '8.6') echo '9631d53cf3e74bfa726893aee1f8994fee4e060c401335946dba2156f440f24c' ;;
'8.7') echo '544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d' ;;
*) exit 1 *) exit 1
esac esac
} }
@ -216,11 +215,11 @@ contains() {
# (key) should accept. plugin versions are actually prefixes and catch sub- # (key) should accept. plugin versions are actually prefixes and catch sub-
# versions as well. Pairs are taken from: # versions as well. Pairs are taken from:
# https://developer.android.com/studio/releases/gradle-plugin#updating-gradle # https://developer.android.com/studio/releases/gradle-plugin#updating-gradle
d_gradle_plugin_ver_k=(8.4 8.3 8.2 8.1 8.0 7.4 7.3 7.2.0 7.1 7.0 4.2 4.1 4.0 3.6 3.5 3.4 3.3 3.2 3.1 3.0 2.3 2.2 2.1.3 2.1 2.0) d_gradle_plugin_ver_k=(8.4 8.3 8.2 8.1 8.0 7.4 7.3 7.2.0 7.1 7.0 4.2 4.1 4.0 3.6 3.5 3.4 3.3 3.2 3.1 3.0 2.3 2.2 2.1.3 2.1 2.0 1.5 1.3 1.2 1.1 1.0 0.14 0.13 0.12 0.11 0.10 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2)
d_plugin_min_gradle_v=(8.6 8.4 8.2 8.0 8.0 7.5 7.4 7.3.3 7.2 7.0.2 6.7.1 6.5 6.1.1 5.6.4 5.4.1 5.1.1 4.10.1 4.6 4.4 4.1 3.3 2.14.1 2.14.1 2.12 2.12 2.4 2.4 2.3 2.2.1 2.2.1 2.1 2.1 1.12 1.12 1.12 1.11 1.10 1.9 1.8 1.6 1.6 1.4 1.4) d_plugin_min_gradle_v=(8.6 8.4 8.2 8.0 8.0 7.5 7.4 7.3.3 7.2 7.0.2 6.7.1 6.5 6.1.1 5.6.4 5.4.1 5.1.1 4.10.1 4.6 4.4 4.1 3.3 2.14.1 2.14.1 2.12 2.12 2.4 2.4 2.3 2.2.1 2.2.1 2.1 2.1 1.12 1.12 1.12 1.11 1.10 1.9 1.8 1.6 1.6 1.4 1.4)
# All gradle versions we know about # All gradle versions we know about
plugin_v=(8.7 8.6 8.5 8.4 8.3 8.2.1 8.2 8.1.1 8.1 8.0.2 8.0.1 8.0 7.6.4 7.6.3 7.6.2 7.6.1 7.6 7.5.1 7.5 7.4.2 7.4.1 7.4 7.3.3 7.3.2 7.3.1 7.3 7.2 7.1.1 7.1 7.0.2 7.0.1 7.0 6.9.4 6.9.3 6.9.2 6.9.1 6.9 6.8.3 6.8.2 6.8.1 6.8 6.7.1 6.7 6.6.1 6.6 6.5.1 6.5 6.4.1 6.4 6.3 6.2.2 6.2.1 6.2 6.1.1 6.1 6.0.1 6.0 5.6.4 5.6.3 5.6.2 5.6.1 5.6 5.5.1 5.5 5.4.1 5.4 5.3.1 5.3 5.2.1 5.2 5.1.1 5.1 5.0 4.10.3 4.10.2 4.10.1 4.10 4.9 4.8.1 4.8 4.7 4.6 4.5.1 4.5 4.4.1 4.4 4.3.1 4.3 4.2.1 4.2 4.1 4.0.2 4.0.1 4.0 3.5.1 3.5 3.4.1 3.4 3.3 3.2.1 3.2 3.1 3.0 2.14.1 2.14 2.13 2.12 2.11 2.10 2.9 2.8 2.7 2.6 2.5 2.4 2.3 2.2.1 2.2 2.1 2.0 1.12 1.11 1.10 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2 1.1 1.0 0.9.2 0.9.1 0.9 0.8 0.7) plugin_v=(8.6 8.5 8.4 8.3 8.2.1 8.2 8.1.1 8.1 8.0.2 8.0.1 8.0 7.6.4 7.6.3 7.6.2 7.6.1 7.6 7.5.1 7.5 7.4.2 7.4.1 7.4 7.3.3 7.3.2 7.3.1 7.3 7.2 7.1.1 7.1 7.0.2 7.0.1 7.0 6.9.4 6.9.3 6.9.2 6.9.1 6.9 6.8.3 6.8.2 6.8.1 6.8 6.7.1 6.7 6.6.1 6.6 6.5.1 6.5 6.4.1 6.4 6.3 6.2.2 6.2.1 6.2 6.1.1 6.1 6.0.1 6.0 5.6.4 5.6.3 5.6.2 5.6.1 5.6 5.5.1 5.5 5.4.1 5.4 5.3.1 5.3 5.2.1 5.2 5.1.1 5.1 5.0 4.10.3 4.10.2 4.10.1 4.10 4.9 4.8.1 4.8 4.7 4.6 4.5.1 4.5 4.4.1 4.4 4.3.1 4.3 4.2.1 4.2 4.1 4.0.2 4.0.1 4.0 3.5.1 3.5 3.4.1 3.4 3.3 3.2.1 3.2 3.1 3.0 2.14.1 2.14 2.13 2.12 2.11 2.10 2.9 2.8 2.7 2.6 2.5 2.4 2.3 2.2.1 2.2 2.1 2.0 1.12 1.11 1.10 1.9 1.8 1.7 1.6 1.5 1.4 1.3 1.2 1.1 1.0 0.9.2 0.9.1 0.9 0.8 0.7)
v_all=${plugin_v[@]} v_all=${plugin_v[@]}

View File

@ -1790,7 +1790,7 @@ msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet." msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 2.2.1-143-g1a5ee449\n" "Project-Id-Version: fdroidserver 2.2.1-143-g1a5ee449\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2023-05-26 19:39+0000\n" "PO-Revision-Date: 2023-05-26 19:39+0000\n"
"Last-Translator: Mehrab Poladov <thepoladov@protonmail.com>\n" "Last-Translator: Mehrab Poladov <thepoladov@protonmail.com>\n"
"Language-Team: Azerbaijani <https://hosted.weblate.org/projects/f-droid/fdroidserver/az/>\n" "Language-Team: Azerbaijani <https://hosted.weblate.org/projects/f-droid/fdroidserver/az/>\n"
@ -90,11 +90,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: xəta: %(message)s\n" msgstr "%(prog)s: xəta: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -214,11 +209,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -296,10 +286,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -396,11 +382,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -567,16 +548,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -643,11 +614,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -814,10 +780,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -882,10 +844,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1091,10 +1049,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1232,10 +1186,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1394,10 +1344,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1431,10 +1377,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1684,10 +1626,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1849,10 +1787,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1885,10 +1819,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1918,10 +1848,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1979,10 +1905,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2132,10 +2054,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2310,11 +2228,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2472,11 +2385,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2491,10 +2399,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2699,31 +2603,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2734,11 +2613,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -1789,7 +1789,7 @@ msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet." msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 2.1b0\n" "Project-Id-Version: fdroidserver 2.1b0\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n" "Last-Translator: Automatically generated\n"
"Language-Team: none\n" "Language-Team: none\n"
@ -89,11 +89,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -213,11 +208,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -295,10 +285,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -395,11 +381,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -566,16 +547,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -642,11 +613,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -813,10 +779,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -881,10 +843,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1090,10 +1048,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1231,10 +1185,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1393,10 +1343,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1430,10 +1376,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1683,10 +1625,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1848,10 +1786,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1884,10 +1818,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1917,10 +1847,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1978,10 +1904,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2131,10 +2053,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2309,11 +2227,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2471,11 +2384,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2490,10 +2398,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2698,31 +2602,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2733,11 +2612,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.0.6-70-g54bc858\n" "Project-Id-Version: fdroidserver 1.0.6-70-g54bc858\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2021-02-12 09:48+0000\n" "PO-Revision-Date: 2021-02-12 09:48+0000\n"
"Last-Translator: Oymate <dhruboadittya96@gmail.com>\n" "Last-Translator: Oymate <dhruboadittya96@gmail.com>\n"
"Language-Team: Bengali <https://hosted.weblate.org/projects/f-droid/fdroidserver/bn/>\n" "Language-Team: Bengali <https://hosted.weblate.org/projects/f-droid/fdroidserver/bn/>\n"
@ -90,11 +90,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: ত্রুটি: %(message)s\n" msgstr "%(prog)s: ত্রুটি: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -214,11 +209,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -296,10 +286,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -396,11 +382,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -567,16 +548,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -643,11 +614,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -814,10 +780,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -882,10 +844,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1091,10 +1049,6 @@ msgstr "{apkfilename} প্রক্রিয়ারত"
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1232,10 +1186,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1394,10 +1344,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1431,10 +1377,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1684,10 +1626,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1849,10 +1787,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1885,10 +1819,6 @@ msgstr "ব্যবহার"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "ব্যবহার: %s\n" msgstr "ব্যবহার: %s\n"
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1918,10 +1848,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1979,10 +1905,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2132,10 +2054,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2310,11 +2228,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2473,11 +2386,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2492,10 +2400,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2700,31 +2604,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2735,11 +2614,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -1,12 +1,12 @@
# SOME DESCRIPTIVE TITLE. # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021, 2022, 2024. # Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021, 2022.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-10 13:33+0000\n" "PO-Revision-Date: 2022-09-06 14:30+0000\n"
"Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n" "Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n"
"Language-Team: Tibetan <https://hosted.weblate.org/projects/f-droid/fdroidserver/bo/>\n" "Language-Team: Tibetan <https://hosted.weblate.org/projects/f-droid/fdroidserver/bo/>\n"
"Language: bo\n" "Language: bo\n"
@ -14,7 +14,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 4.14.1-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
#, fuzzy #, fuzzy
@ -94,11 +94,6 @@ msgstr[0] "%(option)s གདམ་ཀ་དགོས་ %(number)d རྩོད
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: ནོར་སྐྱོན: %(message)s\n" msgstr "%(prog)s: ནོར་སྐྱོན: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -196,9 +191,9 @@ msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}"
msgstr "'{value}' ཁུངས་ལྡན་རེད་མིན་འདུག{field} འདི་ནང་ {appid}. Regex འགྲོ་ལུགས་: {pattern}" msgstr "'{value}' ཁུངས་ལྡན་རེད་མིན་འདུག{field} འདི་ནང་ {appid}. Regex འགྲོ་ལུགས་: {pattern}"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, fuzzy, python-brace-format
msgid "'{value}' is not a valid {field}, should be {pattern}" msgid "'{value}' is not a valid {field}, should be {pattern}"
msgstr "" msgstr "'{value}' ཁུངས་ལྡན་རེད་མིན་འདུག{field} འདི་ནང་ {appid}. Regex འགྲོ་ལུགས་: {pattern}"
#: ../fdroidserver/checkupdates.py #: ../fdroidserver/checkupdates.py
#, python-brace-format #, python-brace-format
@ -219,11 +214,6 @@ msgstr "/གནས་དོན་བོར་བརླག་སོང་འད
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "{path}མིང་རྟགས་བཀོད་པའི་ཆོག་མཆན་ལག་ཁྱེར་འདིའི་ནང་རྙེད་མ་སོང་།"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "PGP གྱི་མིང་རྟགས་དེ་རེ་པོ་ཐུམ་སྒྲིལ་ནང་GnuPG ཁ་སྣོན་བྱས་ནས་རེ་པོ་ནང་ལ་བཅུག" msgstr "PGP གྱི་མིང་རྟགས་དེ་རེ་པོ་ཐུམ་སྒྲིལ་ནང་GnuPG ཁ་སྣོན་བྱས་ནས་རེ་པོ་ནང་ལ་བཅུག"
@ -301,10 +291,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -400,11 +386,6 @@ msgstr "སྡེ་ཚན་'%s' ཁུངས་ལྡན་མ་རེད།"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "སྡེ་ཚན་རྣམས་སྒྲིག་མེད།" msgstr "སྡེ་ཚན་རྣམས་སྒྲིག་མེད།"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "མཉེན་ཆས་རྣམས་གསར་བསྒྱུར་བྱས་མིན་གཟིགས་ཞིབ་གནང་དང་།" msgstr "མཉེན་ཆས་རྣམས་གསར་བསྒྱུར་བྱས་མིན་གཟིགས་ཞིབ་གནང་དང་།"
@ -575,16 +556,6 @@ msgstr "འགྲེལ་བཤད་འདི་ལ་ཐོ་གཞུང་
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "རིང་ཐུང་གི་འགྲེལ་བཤད་ {length} {limit} ལས་བརྒལ་འདུག char limit" msgstr "རིང་ཐུང་གི་འགྲེལ་བཤད་ {length} {limit} ལས་བརྒལ་འདུག char limit"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -651,11 +622,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "'{field}'ནང་གི་ངོ་བཤུས་སྦྲེལ་མཐུད།: {url}" msgstr "'{field}'ནང་གི་ངོ་བཤུས་སྦྲེལ་མཐུད།: {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -826,11 +792,6 @@ msgstr "མཉེན་ཆས་ཁ་ཤས་ཀྱི་ཁུངས་ལྡ
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "{path}ནང་ལ་སྣ་མང་མིང་རྟགས་ཆོག་མཆན་ལག་ཁྱེར་རྙེད་སོང་།" msgstr "{path}ནང་ལ་སྣ་མང་མིང་རྟགས་ཆོག་མཆན་ལག་ཁྱེར་རྙེད་སོང་།"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "མཛོད་ཁང་ཆེད་དུ་་མིང་རྟགས་བཀོད་པའི་ལག་ཁྱེར་མང་པོ་རྙེད་འདུག."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -896,11 +857,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "གིཊ་སྐྱར་སྒྲིག་ཐུབ་མ་སོང་།" msgstr "གིཊ་སྐྱར་སྒྲིག་ཐུབ་མ་སོང་།"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "གིཊ་ཡན་ལག་རྒྱ་ཁྱོན་གསར་བསྒྱུར་ཐུབ་མ་སོང་།"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "གིཊ་རྒྱ་ཁྱོན་མཉམ་བསྲེ་ཐུབ་མ་སོང་།" msgstr "གིཊ་རྒྱ་ཁྱོན་མཉམ་བསྲེ་ཐུབ་མ་སོང་།"
@ -1106,10 +1062,6 @@ msgstr "ཐུམ་སྒྲིལ་གྱི་མིང་ཀློག་བ
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "མིང་རྟགས་བཀོད་པའི་ལྡེ་མིག་ཆེད་དུ་སྟོན་པའི་ལྡེ་མིག་གསོག་ཉར་ཁང་གི་ལམ།\t" msgstr "མིང་རྟགས་བཀོད་པའི་ལྡེ་མིག་ཆེད་དུ་སྟོན་པའི་ལྡེ་མིག་གསོག་ཉར་ཁང་གི་ལམ།\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1195,7 +1147,7 @@ msgstr "གནས་ཚུལ་རྙེད་མ་སོང་།."
#: ../fdroidserver/checkupdates.py #: ../fdroidserver/checkupdates.py
#, fuzzy #, fuzzy
msgid "No matching tags found" msgid "No matching tags found"
msgstr "གནས་ཚུལ་རྙེད་མ་སོང་།" msgstr "གནས་ཚུལ་རྙེད་མ་སོང་།."
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
@ -1252,11 +1204,6 @@ msgstr "ཟུར་སྣོན་ཡོ་བྱད་རྙེད་མ་ས
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "མིང་རྟགས་མ་བཀོད་པའི་ཕྱོགས་དེབ་མིན་འདུག-བྱ་རྒྱུ་གང་ཡང་མེད།" msgstr "མིང་རྟགས་མ་བཀོད་པའི་ཕྱོགས་དེབ་མིན་འདུག-བྱ་རྒྱུ་གང་ཡང་མེད།"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "ཆ་རྒྱུས་མེད་པའི་དམིགས་བསལ་ཞིག་རྙེད་སོང་།"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1416,10 +1363,6 @@ msgstr "ཐོ་གཞུད་འདི་གིཊ་ཐག་རིང་ག
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "{url}ཆེད་དུ་ཨང་གྲངས་ཀྱི་ཐོ་གཞུང་གསར་བསྒྱུར།" msgstr "{url}ཆེད་དུ་ཨང་གྲངས་ཀྱི་ཐོ་གཞུང་གསར་བསྒྱུར།"
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1453,10 +1396,6 @@ msgstr "ཐུམ་སྒྲིལ་གྱི་མིང་ཀློག་བ
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "སྦས་ཁུང་ནས་ {apkfilename}ཀློག་བཞིན་པ།" msgstr "སྦས་ཁུང་ནས་ {apkfilename}ཀློག་བཞིན་པ།"
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "དམིགས་སྟོན་བྱས་པའི་ཡིག་ཆ་རྣམས་མེད་པ་བཟོ་བཞིན་པ།" msgstr "དམིགས་སྟོན་བྱས་པའི་ཡིག་ཆ་རྣམས་མེད་པ་བཟོ་བཞིན་པ།"
@ -1531,9 +1470,9 @@ msgid "Scan the source code of a package"
msgstr "ཐུམ་སྒྲིལ་བྱས་པའི་འབྱུང་ཁུངས་ཨང་རྟགས་འཚག་རྒྱབ" msgstr "ཐུམ་སྒྲིལ་བྱས་པའི་འབྱུང་ཁུངས་ཨང་རྟགས་འཚག་རྒྱབ"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, fuzzy, python-brace-format
msgid "Scanner found {count} problems in {apk}" msgid "Scanner found {count} problems in {apk}"
msgstr "" msgstr "འཚག་རྒྱབ་ལ་སྐྱོན་རྙེད་པ།"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, python-brace-format
@ -1705,10 +1644,6 @@ msgstr "ལྡེ་མིག་གཞན་ལ་སྐྱོན་ཆ་འད
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1871,10 +1806,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1908,11 +1839,6 @@ msgstr "བེད་སྤྱོད།"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "བེད་སྤྱོད།:%s 1\n" msgstr "བེད་སྤྱོད།:%s 1\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "བེད་སྤྱོད།/HEAD གྱི་ཚབ་ཏུ།/ སོར་བཞག་ཡན་ལག་ནང་དུ་ཡོད་པའི་དོན་ཚན་ཨ་མ།"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "བེད་སྤྱོད།/HEAD གྱི་ཚབ་ཏུ།/ སོར་བཞག་ཡན་ལག་ནང་དུ་ཡོད་པའི་དོན་ཚན་ཨ་མ།" msgstr "བེད་སྤྱོད།/HEAD གྱི་ཚབ་ཏུ།/ སོར་བཞག་ཡན་ལག་ནང་དུ་ཡོད་པའི་དོན་ཚན་ཨ་མ།"
@ -1942,10 +1868,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -2003,10 +1925,6 @@ msgstr "བརྡ་སྟོན་པའི་མིང་རྟགས་དེ
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'ཁྱད་པར་ཅན་གྱི་མིང་' ལྡེ་མིག་བཟོས་པའི་སྐབས་ལ་བེད་སྤྱོད་བྱེད།" msgstr "X.509 'ཁྱད་པར་ཅན་གྱི་མིང་' ལྡེ་མིག་བཟོས་པའི་སྐབས་ལ་བེད་སྤྱོད་བྱེད།"
@ -2158,10 +2076,6 @@ msgstr "ཚིག་སྒྲུབ་ཀྱི་གདམ་ཀའི་རྙ
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2252,7 +2166,7 @@ msgstr "གཡེང་ཚེག"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, fuzzy #, fuzzy
msgid "force metadata errors (default) to be warnings, or to be ignored." msgid "force metadata errors (default) to be warnings, or to be ignored."
msgstr "སྐྱོན་ཤོར་བ་ལ་ཉེན་བརྡ་ངེས་པར་དུ་གཏོང་དགོས་པ་དང་། ཡང་ན་ཡ་མ་བྱེད།." msgstr "སྐྱོན་ཤོར་བ་ལ་ཉེན་བརྡ་ངེས་པར་དུ་གཏོང་དགོས་པ་དང་། ཡང་ན་ཡ་མ་བྱེད།"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, fuzzy #, fuzzy
@ -2340,11 +2254,6 @@ msgstr "local_copy_dir ངེས་པར་ཕྱོགས་དེབ་ཡི
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "མེ་ལོང་། '%s 1' 'fdroid'དང་མཉམ་དུ་མཇུག་སྐྱོང་མི་ཐུབ།!" msgstr "མེ་ལོང་། '%s 1' 'fdroid'དང་མཉམ་དུ་མཇུག་སྐྱོང་མི་ཐུབ།!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2379,7 +2288,7 @@ msgstr "ཆ་རྒྱུས་མེད་པའི་དམིགས་བས
#: ../fdroidserver/checkupdates.py #: ../fdroidserver/checkupdates.py
#, fuzzy #, fuzzy
msgid "no version information found" msgid "no version information found"
msgstr "ཆ་རྒྱུས་མེད་པའི་དམིགས་བསལ་ཞིག་རྙེད་སོང་།" msgstr "ཆ་རྒྱུས་མེད་པའི་དམིགས་བསལ་ཞིག་རྙེད་སོང་།!"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
@ -2504,11 +2413,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2523,11 +2427,6 @@ msgstr "s3cmd sync ཕྱོགས་སྟོན།{path}1 དེ་ནས {url
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir \"fdroid\"གིས་མཇུག་སྐྱོང་མིན་འདུག་ : \"{path}1\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2731,31 +2630,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' འདི་ 'config.yml' ནང་སྒྲིག་ཐུབ་མ་སོང་།!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2766,11 +2640,6 @@ msgstr "{path} ལ་ཆེ་ཆུང་མེད།!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -1788,7 +1788,7 @@ msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet." msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py

View File

@ -5,22 +5,20 @@
# Fjuro <fjuro@seznam.cz>, 2022. # Fjuro <fjuro@seznam.cz>, 2022.
# Filip Klopec <filipklopec@gmail.com>, 2022. # Filip Klopec <filipklopec@gmail.com>, 2022.
# Fjuro <ifjuro@proton.me>, 2022, 2023. # Fjuro <ifjuro@proton.me>, 2022, 2023.
# Daniel Hejduk <jellymail@protonmail.com>, 2023.
# Fjuro <fjuro@alius.cz>, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n" "Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-23 10:07+0000\n" "PO-Revision-Date: 2023-05-26 19:39+0000\n"
"Last-Translator: Fjuro <fjuro@alius.cz>\n" "Last-Translator: Fjuro <ifjuro@proton.me>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/>\n" "Language-Team: Czech <https://hosted.weblate.org/projects/f-droid/fdroidserver/cs/>\n"
"Language: cs\n" "Language: cs\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=((n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2);\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 4.18-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -101,11 +99,6 @@ msgstr[2] "možnost %(option)s vyžaduje %(number)d argumentů"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: chyba: %(message)s\n" msgstr "%(prog)s: chyba: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -225,11 +218,6 @@ msgstr "/issues chybí"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "Jako argument je vyžadována adresa URL!" msgstr "Jako argument je vyžadována adresa URL!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Nenalezeny žádné podpisové certifikáty v {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Přidejte podpisy PGP pomocí GnuPG pro balíčky v repo" msgstr "Přidejte podpisy PGP pomocí GnuPG pro balíčky v repo"
@ -307,11 +295,6 @@ msgstr "Aplikace má binární soubory, ale nemá odpovídající AllowedAPKSign
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Aplikace má NoSourceSince nebo ArchivePolicy \"0 versions\", ale AutoUpdateMode nebo UpdateCheckMode nejsou None" msgstr "Aplikace má NoSourceSince nebo ArchivePolicy \"0 versions\", ale AutoUpdateMode nebo UpdateCheckMode nejsou None"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Aplikace má NoSourceSince nebo ArchivePolicy \"0 versions\", ale AutoUpdateMode nebo UpdateCheckMode nejsou None"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -409,11 +392,6 @@ msgstr "Kategorie „%s“ není platná"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "Kategorie nejsou nastavené" msgstr "Kategorie nejsou nastavené"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Zkontrolujte aktualizace aplikací" msgstr "Zkontrolujte aktualizace aplikací"
@ -580,16 +558,6 @@ msgstr "Popis má seznam (%s) ale není opatřen odrážkami (*) ani očíslová
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "Popis délky {length} přesahuje limit {limit} znaků" msgstr "Popis délky {length} přesahuje limit {limit} znaků"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Nepřidávat disable: k vygenerovaným položkám sestavení" msgstr "Nepřidávat disable: k vygenerovaným položkám sestavení"
@ -656,11 +624,6 @@ msgstr "Duplicitní záznam \"%s\" v konfiguraci zrcadel!"
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Duplicitní odkaz v '{field}': {url}" msgstr "Duplicitní odkaz v '{field}': {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "CHYBA: Podpříkaz „server“ byl odebrán, použijte „deploy“!" msgstr "CHYBA: Podpříkaz „server“ byl odebrán, použijte „deploy“!"
@ -831,11 +794,6 @@ msgstr "U některých aplikací nalezeny neplatné versionCodes"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "V {path} nalezeno několik podpisových bloků JAR" msgstr "V {path} nalezeno několik podpisových bloků JAR"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Nalezeno více podpisových certifikátů pro repozitář."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -900,11 +858,6 @@ msgstr "Git remote set-head se nezdařil: „%s“"
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Git reset se nezdařil" msgstr "Git reset se nezdařil"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Git submodule update se nezdařil"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Git submodule sync se nezdařil" msgstr "Git submodule sync se nezdařil"
@ -1110,10 +1063,6 @@ msgstr "Uchovávání neúspěšného sestavení „{apkfilename}“"
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Úložiště klíčů pro podpisový klíč:\t" msgstr "Úložiště klíčů pro podpisový klíč:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1121,7 +1070,7 @@ msgstr "Poslední použitá revize {commit} vypadá jako značka, ale Upda
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Liberapay donation methods belong in the Liberapay: field" msgid "Liberapay donation methods belong in the Liberapay: field"
msgstr "Darovací metody Liberapay patří do pole Liberapay: pole" msgstr "Darovací metody Liberapay patří do pole Liberapay:"
#: ../fdroidserver/rewritemeta.py #: ../fdroidserver/rewritemeta.py
msgid "List files that would be reformatted (dry run)" msgid "List files that would be reformatted (dry run)"
@ -1251,11 +1200,6 @@ msgstr "Nebyly nalezeny žádné značky"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Žádný nepodepsaný adresář - není co dělat" msgstr "Žádný nepodepsaný adresář - není co dělat"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "nenalezeny informace o verzi"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Neplatná definice velikosti: \"{}\"" msgstr "Neplatná definice velikosti: \"{}\""
@ -1306,7 +1250,7 @@ msgstr "Zpracovat pouze aplikace s automatickými aktualizacemi"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "OpenCollective donation methods belong in the OpenCollective: field" msgid "OpenCollective donation methods belong in the OpenCollective: field"
msgstr "Darovací metody OpenCollective patří do pole OpenCollective: pole" msgstr "Darovací metody OpenCollective patří do pole OpenCollective:"
#: /usr/lib/python3.11/optparse.py #: /usr/lib/python3.11/optparse.py
msgid "Options" msgid "Options"
@ -1414,11 +1358,6 @@ msgstr "Odeslat protokol do tohoto vzdáleného git repozitáře"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Odeslání protokolu binární průhlednosti do {url}" msgstr "Odeslání protokolu binární průhlednosti do {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Git remote set-head se nezdařil: „%s“"
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1452,11 +1391,6 @@ msgstr "Čtení packageName/versionCode/versionName se nezdařilo, APK nepatné:
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Čtení {apkfilename} z mezipaměti" msgstr "Čtení {apkfilename} z mezipaměti"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "stáhnout nejnovější verzi podpisů z webu"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Odebírání určených souborů" msgstr "Odebírání určených souborů"
@ -1707,13 +1641,6 @@ msgstr "Došlo ke kolizi keyalias publikování zastaveno"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Aplikace, které byly archivovány z hlavního repozitáře." msgstr "Aplikace, které byly archivovány z hlavního repozitáře."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"CHYBA: tento příkaz by nikdy neměl být použit k zrcadlení f-droid.org!\n"
"Celý mirror f-droid.org vyžaduje více než 200GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Toto je repozitář aplikací, který lze používat s aplikací F-Droid. Aplikace v tomto repozitáři jsou buď oficiální binární soubory sestavené původními vývojáři aplikací, nebo binární soubory sestavené ze zdrojových kódů správcem f-droid.org pomocí nástrojů na adrese https://gitlab.com/fdroid." msgstr "Toto je repozitář aplikací, který lze používat s aplikací F-Droid. Aplikace v tomto repozitáři jsou buď oficiální binární soubory sestavené původními vývojáři aplikací, nebo binární soubory sestavené ze zdrojových kódů správcem f-droid.org pomocí nástrojů na adrese https://gitlab.com/fdroid."
@ -1882,15 +1809,10 @@ msgstr "UpdateCheckData musí používat HTTPS URL: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData není platná URL: {url}" msgstr "UpdateCheckData není platná URL: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode je nastaven, ale vypadá to, že akce checkupdates ještě nebyla spuštěna."
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode je nastaven, ale vypadá to, že akce checkupdates ještě nebyla spuštěna." msgstr "UpdateCheckMode je nastaven, ale vypadá to, že checkupdates ještě nebylo spuštěno"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckName is set to the known application ID, it can be removed" msgid "UpdateCheckName is set to the known application ID, it can be removed"
@ -1919,11 +1841,6 @@ msgstr "Použití"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Použití: %s\n" msgstr "Použití: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Použijte /HEAD místo /master k ukázání na soubor ve výchozí větvi"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Použijte /HEAD místo /master k ukázání na soubor ve výchozí větvi" msgstr "Použijte /HEAD místo /master k ukázání na soubor ve výchozí větvi"
@ -1953,11 +1870,6 @@ msgstr "Používám APK Signature v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Používám APK Signature v3" msgstr "Používám APK Signature v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Používám APK Signature v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Používám jarsigner Javy, není doporučeno pro ověřování APK! Použijte apksigner" msgstr "Používám jarsigner Javy, není doporučeno pro ověřování APK! Použijte apksigner"
@ -2015,10 +1927,6 @@ msgstr "Pokud jsou nakonfigurovány podepsané indexy, vytvořit v této fázi p
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Při lintingu celého úložiště je yamllint ve výchozím nastavení zakázán. Tato volba vynucuje yamllint bez ohledu na to." msgstr "Při lintingu celého úložiště je yamllint ve výchozím nastavení zakázán. Tato volba vynucuje yamllint bez ohledu na to."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'Distinguished Name' používané při generování klíčů" msgstr "X.509 'Distinguished Name' používané při generování klíčů"
@ -2169,11 +2077,6 @@ msgstr "konfliktní subparser: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "nepodařilo se parsovat '{path}'" msgstr "nepodařilo se parsovat '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "nepodařilo se parsovat srclib spec (není určen ref): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "nepodařilo se parsovat srclib spec (není určen ref): '{}'" msgstr "nepodařilo se parsovat srclib spec (není určen ref): '{}'"
@ -2349,11 +2252,6 @@ msgstr "local_copy_dir musí být adresář, ne soubor!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "mirror '%s' nekončí s 'fdroid'!" msgstr "mirror '%s' nekončí s 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Nyní nastavte následující v config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2511,11 +2409,6 @@ msgstr "repo_icon \"repo/icons/%s\" neexistuje, generování placeholderu."
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url musí končit na /repo" msgstr "repo_url musí končit na /repo"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "ruamel.yaml není nainstalován, nelze zapisovat metadata." msgstr "ruamel.yaml není nainstalován, nelze zapisovat metadata."
@ -2530,11 +2423,6 @@ msgstr "s3cmd sync indexes {path} do {url} a odstranit"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "mezipaměť skeneru je poškozena! Můžete ji vymazat pomocí: {clear}" msgstr "mezipaměť skeneru je poškozena! Můžete ji vymazat pomocí: {clear}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir nekončí s \"fdroid\", možná jste měli na mysli: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "sdílená knihovna" msgstr "sdílená knihovna"
@ -2740,31 +2628,6 @@ msgstr "{path} neexistuje! Vytvořte ji spuštěním:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} má nesprávný podpis balíčku \"{pattern}\", možný exploit Janus!" msgstr "{path} má nesprávný podpis balíčku \"{pattern}\", možný exploit Janus!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' není nastaven v souboru config.yml!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2775,11 +2638,6 @@ msgstr "{path} má nulovou velikost!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} více než 200 MB, ruční nahrání: {url}" msgstr "{path} více než 200 MB, ruční nahrání: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 2.0a5-27-gf24eae0f\n" "Project-Id-Version: fdroidserver 2.0a5-27-gf24eae0f\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2021-01-16 21:23+0000\n" "PO-Revision-Date: 2021-01-16 21:23+0000\n"
"Last-Translator: Aled Powell <aled@aledpowell.cymru>\n" "Last-Translator: Aled Powell <aled@aledpowell.cymru>\n"
"Language-Team: Welsh <https://hosted.weblate.org/projects/f-droid/fdroidserver/cy/>\n" "Language-Team: Welsh <https://hosted.weblate.org/projects/f-droid/fdroidserver/cy/>\n"
@ -94,11 +94,6 @@ msgstr[5] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -218,11 +213,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -300,10 +290,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -404,11 +390,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Gwirio am ddiweddariadau i apiau" msgstr "Gwirio am ddiweddariadau i apiau"
@ -575,16 +556,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -651,11 +622,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -822,10 +788,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -890,10 +852,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1099,10 +1057,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1240,10 +1194,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1402,10 +1352,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1439,10 +1385,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1696,10 +1638,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, fuzzy #, fuzzy
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
@ -1868,10 +1806,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1904,10 +1838,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Defndd: %s\n" msgstr "Defndd: %s\n"
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1937,10 +1867,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1998,10 +1924,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2155,10 +2077,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2337,11 +2255,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2500,11 +2413,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2519,10 +2427,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2731,31 +2635,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2766,11 +2645,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -20,21 +20,20 @@
# Follpvosten <wolfi@karpador.xyz>, 2021. # Follpvosten <wolfi@karpador.xyz>, 2021.
# ssantos <ssantos@web.de>, 2022, 2023. # ssantos <ssantos@web.de>, 2022, 2023.
# "C. Rüdinger" <Mail-an-CR@web.de>, 2023. # "C. Rüdinger" <Mail-an-CR@web.de>, 2023.
# VfBFan <VfBFan@users.noreply.hosted.weblate.org>, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-03-12 12:37+0000\n" "PO-Revision-Date: 2023-06-23 14:52+0000\n"
"Last-Translator: VfBFan <VfBFan@users.noreply.hosted.weblate.org>\n" "Last-Translator: \"C. Rüdinger\" <Mail-an-CR@web.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/f-droid/fdroidserver/de/>\n" "Language-Team: German <https://hosted.weblate.org/projects/f-droid/fdroidserver/de/>\n"
"Language: de\n" "Language: de\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 4.18.1\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -114,11 +113,6 @@ msgstr[1] "Option %(option)s benötigt %(number)d Argumente"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: Fehler: %(message)s\n" msgstr "%(prog)s: Fehler: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -238,11 +232,6 @@ msgstr "/issues fehlt"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "Als Argument wird eine URL benötigt!" msgstr "Als Argument wird eine URL benötigt!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Keine Signaturzertifikate in {path} gefunden"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "GnuPG PGP-Signaturen für Programmpakete in der Paketquelle hinzufügen" msgstr "GnuPG PGP-Signaturen für Programmpakete in der Paketquelle hinzufügen"
@ -320,11 +309,6 @@ msgstr "App besitzt Binärdateien aber keine entsprechenden AllowedAPKSigningKey
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "App hat NoSourceSince oder ArchivePolicy \"0 Versionen\", aber AutoUpdateMode oder UpdateCheckMode sind nicht None" msgstr "App hat NoSourceSince oder ArchivePolicy \"0 Versionen\", aber AutoUpdateMode oder UpdateCheckMode sind nicht None"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "App hat NoSourceSince oder ArchivePolicy \"0 Versionen\", aber AutoUpdateMode oder UpdateCheckMode sind nicht None"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -421,11 +405,6 @@ msgstr "Kategorie »%s« ist nicht gültig"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "Kategorien sind nicht festgelegt" msgstr "Kategorien sind nicht festgelegt"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Auf Aktualisierungen für Anwendungen prüfen" msgstr "Auf Aktualisierungen für Anwendungen prüfen"
@ -592,16 +571,6 @@ msgstr "Beschreibung enthält eine Liste (%s), ist aber weder aufgezählt (*) no
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "Länge der Beschreibung {length} übersteigt die zulässige Zeichenzahl {limit}" msgstr "Länge der Beschreibung {length} übersteigt die zulässige Zeichenzahl {limit}"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Nicht 'disable:' zu den erzeugten Erstellungseinträgen hinzufügen" msgstr "Nicht 'disable:' zu den erzeugten Erstellungseinträgen hinzufügen"
@ -668,11 +637,6 @@ msgstr "Doppelter „%s“-Eintrag in Spiegelserver-Konfiguration!"
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Link in „{field}” duplizieren: {url}" msgstr "Link in „{field}” duplizieren: {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "FEHLER: Der \"server\"-Unterbefehl wurde entfernt, verwende \"deploy\"!" msgstr "FEHLER: Der \"server\"-Unterbefehl wurde entfernt, verwende \"deploy\"!"
@ -843,11 +807,6 @@ msgstr "Ungültige versionCodes für einige Apps gefunden"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Mehrere JAR-Signaturzertifikate in {path} gefunden" msgstr "Mehrere JAR-Signaturzertifikate in {path} gefunden"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Mehrere Signaturzertifikate für das Repository gefunden."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -912,11 +871,6 @@ msgstr "Git remote set-head fehlgeschlagen: \"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Git reset fehlgeschlagen" msgstr "Git reset fehlgeschlagen"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Git submodule update fehlgeschlagen"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Git submodule sync fehlgeschlagen" msgstr "Git submodule sync fehlgeschlagen"
@ -964,7 +918,7 @@ msgstr "Ignoriere veraltete Cachedaten für {apkfilename}"
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
msgid "Include APKs that are signed with disabled algorithms like MD5" msgid "Include APKs that are signed with disabled algorithms like MD5"
msgstr "APKs einschließen, die mit untauglichen Algorithmen wie MD5 signiert sind" msgstr "APKs einschließen, die mit deaktivierten Algorithmen wie MD5 signiert sind"
#: ../fdroidserver/mirror.py #: ../fdroidserver/mirror.py
msgid "Include the PGP signature .asc files in the mirror" msgid "Include the PGP signature .asc files in the mirror"
@ -1122,10 +1076,6 @@ msgstr "Fehlgeschlagener Build \"{apkfilename}\" behalten"
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Schlüsselspeicher für den Signierschlüssel:\t" msgstr "Schlüsselspeicher für den Signierschlüssel:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1216,7 +1166,7 @@ msgstr "Keine Mindest-SDK-Version in {0} gefunden, Standard (3) verwendet."
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "No need to specify that the app is Free Software" msgid "No need to specify that the app is Free Software"
msgstr "Sie müssen nicht angeben, dass die App Freie Software ist" msgstr "Sie müssen nicht angeben, dass die App freie Software ist"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "No need to specify that the app is for Android" msgid "No need to specify that the app is for Android"
@ -1263,11 +1213,6 @@ msgstr "Keine Tags gefunden"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Kein unsigniertes Verzeichnis - nichts zu tun" msgstr "Kein unsigniertes Verzeichnis - nichts zu tun"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "keine Versionsinformation gefunden"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Keine gültige Größendefinition: \"{}\"" msgstr "Keine gültige Größendefinition: \"{}\""
@ -1426,11 +1371,6 @@ msgstr "Anmeldung an diesem Git-Repository durchführen"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Binäres Transparenz-Log nach {url} pushen" msgstr "Binäres Transparenz-Log nach {url} pushen"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Git remote set-head fehlgeschlagen: \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1464,11 +1404,6 @@ msgstr "Lesen von packageName/versionCode/versionName fehlgeschlagen,APK ungült
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Lese {apkfilename} aus dem Cache" msgstr "Lese {apkfilename} aus dem Cache"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "Abrufen der neuesten Version von Signaturen aus dem Web"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Entferne angegebene Dateien" msgstr "Entferne angegebene Dateien"
@ -1718,13 +1653,6 @@ msgstr "Es gibt eine Keyalias-Kollision - Veröffentlichung gestoppt"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Dies sind die Apps, die aus dem Hauptrepository archiviert wurden." msgstr "Dies sind die Apps, die aus dem Hauptrepository archiviert wurden."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"FEHLER: Dieser Befehl sollte niemals verwendet werden, um f-droid.org zu spiegeln!\n"
"Ein vollständiger Spiegel von f-droid.org erfordert mehr als 200 GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Dies ist eine Paketquelle für Anwendungen, die für die Benutzung zusammen mit F-Droid gedacht ist. Die darin enthaltenen Anwendungen sind entweder offizielle von den Entwicklern erstellte Binärdateien oder werden von f-droid.org mithilfe des Werkzeugs auf https://gitlab.com/fdroid aus dem Quellcode erstellt." msgstr "Dies ist eine Paketquelle für Anwendungen, die für die Benutzung zusammen mit F-Droid gedacht ist. Die darin enthaltenen Anwendungen sind entweder offizielle von den Entwicklern erstellte Binärdateien oder werden von f-droid.org mithilfe des Werkzeugs auf https://gitlab.com/fdroid aus dem Quellcode erstellt."
@ -1893,13 +1821,8 @@ msgstr "UpdateCheckData muss HTTPS-URL verwenden: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData hat eine ungültige URL: {url}" msgstr "UpdateCheckData hat eine ungültige URL: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode ist gesetzt, aber likecheckupdates wurde vermutlich noch nicht ausgeführt"
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode ist gesetzt, aber likecheckupdates wurde vermutlich noch nicht ausgeführt" msgstr "UpdateCheckMode ist gesetzt, aber likecheckupdates wurde vermutlich noch nicht ausgeführt"
@ -1930,11 +1853,6 @@ msgstr "Syntax"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Syntax: %s\n" msgstr "Syntax: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Verwenden Sie /HEAD anstelle von /master, um auf eine Datei im Hauptzweig zu verweisen"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Verwenden Sie /HEAD anstelle von /master, um auf eine Datei im Hauptzweig zu verweisen" msgstr "Verwenden Sie /HEAD anstelle von /master, um auf eine Datei im Hauptzweig zu verweisen"
@ -1964,11 +1882,6 @@ msgstr "Verwende APK-Signatur v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Verwende APK-Signatur v3" msgstr "Verwende APK-Signatur v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Verwende APK-Signatur v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Von Java jarsigner zur Verifikation von APKs wird abgeraten! Verwenden Sie apksigner" msgstr "Von Java jarsigner zur Verifikation von APKs wird abgeraten! Verwenden Sie apksigner"
@ -2026,10 +1939,6 @@ msgstr "Bei einer Konfiguration mit signierten Indizes, in dieser Phase nur unsi
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Beim Linting des gesamten Repositoriums wird yamllint standardmäßig deaktiviert. Diese Option erzwingt yamllint ungeachtet dessen." msgstr "Beim Linting des gesamten Repositoriums wird yamllint standardmäßig deaktiviert. Diese Option erzwingt yamllint ungeachtet dessen."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'Distinguished Name' zum Erzeugen von Schlüsseln" msgstr "X.509 'Distinguished Name' zum Erzeugen von Schlüsseln"
@ -2179,11 +2088,6 @@ msgstr "widersprüchlicher Subparser: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "konnte '{path}' nicht parsen" msgstr "konnte '{path}' nicht parsen"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "konnte srclib-Spezifikation nicht parsen (keine ref angegeben): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "konnte srclib-Spezifikation nicht parsen (keine ref angegeben): '{}'" msgstr "konnte srclib-Spezifikation nicht parsen (keine ref angegeben): '{}'"
@ -2358,11 +2262,6 @@ msgstr "local_copy_dir muß ein Verzeichnis sein, keine Datei!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "Spiegelserver '%s' ended nicht mit 'fdroid'!" msgstr "Spiegelserver '%s' ended nicht mit 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Legen Sie diese nun in der config.yml fest:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2520,11 +2419,6 @@ msgstr "repo_icon \"repo/icons/%s\" existiert nicht, erzeuge Platzhalter."
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url muss mit /repo enden" msgstr "repo_url muss mit /repo enden"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "ruamel.yaml ist nicht installiert, kann Metadaten nicht schreiben." msgstr "ruamel.yaml ist nicht installiert, kann Metadaten nicht schreiben."
@ -2539,11 +2433,6 @@ msgstr "s3cmd-Sync {path} indizieren auf {url} und dann löschen"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "Der Scanner-Cache ist fehlerhaft! Sie können ihn löschen mit: '{clear}'" msgstr "Der Scanner-Cache ist fehlerhaft! Sie können ihn löschen mit: '{clear}'"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir endet nicht auf \"fdroid\", meinten Sie stattdessen: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "dynamische Bibliothek" msgstr "dynamische Bibliothek"
@ -2748,31 +2637,6 @@ msgstr "{path} existiert nicht! Erstellen Sie es durch Ausführen von:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} hat die schlechte Dateisignatur \"{pattern}\", möglicher Janus-Exploit!" msgstr "{path} hat die schlechte Dateisignatur \"{pattern}\", möglicher Janus-Exploit!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "Kein 'sdk_path' in 'config.yml' festgelegt!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2783,11 +2647,6 @@ msgstr "{path} hat Dateigröße Null!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} ist größer als 200MB und muss manuell auf {url} hochgeladen werden" msgstr "{path} ist größer als 200MB und muss manuell auf {url} hochgeladen werden"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -1795,7 +1795,7 @@ msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet." msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py

View File

@ -12,13 +12,13 @@
# Iago <iagrivmoa@gmail.com>, 2022. # Iago <iagrivmoa@gmail.com>, 2022.
# Iago <translate@delthia.com>, 2022. # Iago <translate@delthia.com>, 2022.
# Jaime Marquínez Ferrándiz <weblate@jregistros.fastmail.net>, 2022. # Jaime Marquínez Ferrándiz <weblate@jregistros.fastmail.net>, 2022.
# gallegonovato <fran-carro@hotmail.es>, 2022, 2023, 2024. # gallegonovato <fran-carro@hotmail.es>, 2022, 2023.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-10 18:44+0000\n" "PO-Revision-Date: 2023-08-01 21:07+0000\n"
"Last-Translator: gallegonovato <fran-carro@hotmail.es>\n" "Last-Translator: gallegonovato <fran-carro@hotmail.es>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/f-droid/fdroidserver/es/>\n" "Language-Team: Spanish <https://hosted.weblate.org/projects/f-droid/fdroidserver/es/>\n"
"Language: es\n" "Language: es\n"
@ -26,7 +26,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 5.0-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -106,11 +106,6 @@ msgstr[1] "la opción %(option)s requiere %(number)d argumentos"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: error: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -230,11 +225,6 @@ msgstr "no se encuentra /issues"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "¡Se requiere una URL como argumento!" msgstr "¡Se requiere una URL como argumento!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "No se ha encontrado ningún certificado de firma en {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Añadir las firmas PGP para los paquetes en el repositorio usando GnuPG" msgstr "Añadir las firmas PGP para los paquetes en el repositorio usando GnuPG"
@ -312,11 +302,6 @@ msgstr "La aplicación tiene archivos binarios, pero no las AllowedAPKSigningKey
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "La aplicación tiene NoSourceSince o ArchivePolicy \"0 versiones\", pero AutoUpdateMode o UpdateCheckMode no es Ninguno" msgstr "La aplicación tiene NoSourceSince o ArchivePolicy \"0 versiones\", pero AutoUpdateMode o UpdateCheckMode no es Ninguno"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "La aplicación tiene NoSourceSince o ArchivePolicy \"0 versiones\", pero AutoUpdateMode o UpdateCheckMode no es Ninguno"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -413,11 +398,6 @@ msgstr "La categoría '%s' no es válida"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "No se han establecido categorías" msgstr "No se han establecido categorías"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Buscar actualizaciones de aplicaciones" msgstr "Buscar actualizaciones de aplicaciones"
@ -584,16 +564,6 @@ msgstr "La descripción tiene una lista (%s) pero no está estructurada (*) ni n
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "La descripción de longitud {length} supera el límite de caracteres, {limit}" msgstr "La descripción de longitud {length} supera el límite de caracteres, {limit}"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "No agregar 'disable:' a las entradas de compilaciones generadas" msgstr "No agregar 'disable:' a las entradas de compilaciones generadas"
@ -660,11 +630,6 @@ msgstr "¡Entrada duplicada \"%s\"en la configuración de los espejos!"
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Enlace duplicado en '{field}': {url}" msgstr "Enlace duplicado en '{field}': {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "ERROR: ¡El subcomando \"server\" se ha eliminado. Use \"deploy\"!" msgstr "ERROR: ¡El subcomando \"server\" se ha eliminado. Use \"deploy\"!"
@ -835,11 +800,6 @@ msgstr "Se encontraron códigos de versión (versionCodes) inválidos para algun
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Encontrados varios ficheros de bloque de firma JAR en {path}" msgstr "Encontrados varios ficheros de bloque de firma JAR en {path}"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Encontrados varios certificados de firma para el repositorio."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -904,11 +864,6 @@ msgstr "Git remote set-head falló: \"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Git reset falló" msgstr "Git reset falló"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "La actualización del submodulo de Git falló"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "La sincronización del submodulo de Git falló" msgstr "La sincronización del submodulo de Git falló"
@ -1114,10 +1069,6 @@ msgstr "Mantener la compilación fallida \"{apkfilename}\""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Depósito de claves para la clave de firma de repositorio:\t" msgstr "Depósito de claves para la clave de firma de repositorio:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1255,11 +1206,6 @@ msgstr "No se encontró ninguna etiqueta"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "No hay directorio sin firma - nada que hacer" msgstr "No hay directorio sin firma - nada que hacer"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "no se encontró información de la versión"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "No es una definición válida del tamaño: \"{}\"" msgstr "No es una definición válida del tamaño: \"{}\""
@ -1418,11 +1364,6 @@ msgstr "Pulse el registro a este repositorio remoto Git"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Publicar el registro de transparencia binario en {url}" msgstr "Publicar el registro de transparencia binario en {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Git remote set-head falló: \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1456,11 +1397,6 @@ msgstr "Error al leer packageName/versionCode/versionName,APK inválido: '{apkfi
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Leyendo {apkfilename} desde caché" msgstr "Leyendo {apkfilename} desde caché"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "obtener la última versión de las firmas de la web"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Removiendo archivos especificados" msgstr "Removiendo archivos especificados"
@ -1710,13 +1646,6 @@ msgstr "Hay una colisión de keyalias - publicación detenida"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Estas son aplicaciones del repositorio principal que se han archivado." msgstr "Estas son aplicaciones del repositorio principal que se han archivado."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"ERROR: ¡esta orden no se debería usar nunca para replicar f-droid.org!\n"
"Una réplica completa de f-droid.org requiere más de 200GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Este es un repositorio de aplicaciones para usar con F-Droid. Las aplicaciones en este repositorio son binarios oficiales construidos por los desarrolladores originales de la aplicación, o son binarios creados a partir de su código fuente por f-droid.org utilizando las herramientas de https://gitlab.com/fdroid." msgstr "Este es un repositorio de aplicaciones para usar con F-Droid. Las aplicaciones en este repositorio son binarios oficiales construidos por los desarrolladores originales de la aplicación, o son binarios creados a partir de su código fuente por f-droid.org utilizando las herramientas de https://gitlab.com/fdroid."
@ -1885,19 +1814,14 @@ msgstr "UpdateCheckData tiene que usar una URL HTTPS: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData tiene una URL no válida: {url}" msgstr "UpdateCheckData tiene una URL no válida: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode está configurado pero parece que aún no se han ejecutado las actualizaciones."
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode está configurado pero parece que aún no se han ejecutado las actualizaciones." msgstr "UpdateCheckMode está configurado pero parece que checkupdates aún no se ha ejecutado"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckName is set to the known application ID, it can be removed" msgid "UpdateCheckName is set to the known application ID, it can be removed"
msgstr "UpdateCheckName está configurado con el ID de la aplicación conocida, se puede eliminar" msgstr "El nombre de verificación de actualización (UpdateCheckName) es el identificador (ID) conocido de la aplicación. Se puede borrar"
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
@ -1922,11 +1846,6 @@ msgstr "Utilización"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Uso: %s\n" msgstr "Uso: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Use /HEAD en vez de /master para apuntar a un fichero en la rama por omisión"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Use /HEAD en vez de /master para apuntar a un fichero en la rama por omisión" msgstr "Use /HEAD en vez de /master para apuntar a un fichero en la rama por omisión"
@ -1956,11 +1875,6 @@ msgstr "Utilizando Firma APK v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Utilizando firma APK v3" msgstr "Utilizando firma APK v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Utilizando Firma APK v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "¡Usando jarsigner de Java. No recomendado para verificar APKs! Use apksigner" msgstr "¡Usando jarsigner de Java. No recomendado para verificar APKs! Use apksigner"
@ -2018,10 +1932,6 @@ msgstr "Cuando está configurado para índices firmados, crear solo índices sin
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Cuando se limpia el repositorio completo yamllint está deshabilitado por defecto. Esta opción fuerza yamllint a pesar de todo." msgstr "Cuando se limpia el repositorio completo yamllint está deshabilitado por defecto. Esta opción fuerza yamllint a pesar de todo."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'Nombre Distintivo' (DN) usado al generar claves" msgstr "X.509 'Nombre Distintivo' (DN) usado al generar claves"
@ -2171,11 +2081,6 @@ msgstr "subanalizador del conflictivo:%s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "no se pudo procesar '{path}'" msgstr "no se pudo procesar '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "no se pudo procesar especificación srclib (sin especificar ref): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "no se pudo procesar especificación srclib (sin especificar ref): '{}'" msgstr "no se pudo procesar especificación srclib (sin especificar ref): '{}'"
@ -2350,11 +2255,6 @@ msgstr "¡local_copy_dir tiene que ser un directorio, no un fichero!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "¡el espejo '%s' no termina en 'fdroid'!" msgstr "¡el espejo '%s' no termina en 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Ahora establezca lo siguiente en config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2512,11 +2412,6 @@ msgstr "repo_icon \"repo/icons/%s\" no existe, generando placeholder."
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url debe terminar con /repo" msgstr "repo_url debe terminar con /repo"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "ruamel.yaml no instalado. No se pueden escribir metadatos." msgstr "ruamel.yaml no instalado. No se pueden escribir metadatos."
@ -2531,11 +2426,6 @@ msgstr "s3cmd sync indexa {path} a {url} y elimina"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "¡El escaner de la cache está mal realizado! Puedes borrarlo con: '{clear}'" msgstr "¡El escaner de la cache está mal realizado! Puedes borrarlo con: '{clear}'"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir no termina en \"fdroid\", tal vez quisiste decir: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "biblioteca compartida" msgstr "biblioteca compartida"
@ -2740,31 +2630,6 @@ msgstr "¡{path} no existe! Créela ejecutando:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "¡{path} tiene una firma de fichero \"{pattern}\" mala, posible exploit Janus!" msgstr "¡{path} tiene una firma de fichero \"{pattern}\" mala, posible exploit Janus!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "¡'sdk_path' no establecido en 'config.yml'!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2775,11 +2640,6 @@ msgstr "¡{path} está vacío!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} mayor de 200MB, subir manualmente: {url}" msgstr "{path} mayor de 200MB, subir manualmente: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2021-04-10 21:26+0000\n" "PO-Revision-Date: 2021-04-10 21:26+0000\n"
"Last-Translator: Germe the fur star <FOSSgerme.deb@tuta.io>\n" "Last-Translator: Germe the fur star <FOSSgerme.deb@tuta.io>\n"
"Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/f-droid/fdroidserver/es_AR/>\n" "Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/f-droid/fdroidserver/es_AR/>\n"
@ -95,11 +95,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: error: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -219,11 +214,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
#, fuzzy #, fuzzy
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
@ -304,10 +294,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -404,11 +390,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Buscar actualizaciones de las aplicaciones" msgstr "Buscar actualizaciones de las aplicaciones"
@ -579,16 +560,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -655,11 +626,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -826,10 +792,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -894,10 +856,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1104,10 +1062,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Ruta al almacén de claves para la llave de firmado del repositorio" msgstr "Ruta al almacén de claves para la llave de firmado del repositorio"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1246,11 +1200,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "¡Se encontró una excepción desconocida!"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1411,10 +1360,6 @@ msgstr "Subir el registro al repositorio remoto de git"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Actualizar el registro de transparencia binario de {url}" msgstr "Actualizar el registro de transparencia binario de {url}"
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1448,10 +1393,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1701,10 +1642,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1866,10 +1803,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1902,10 +1835,6 @@ msgstr "Uso"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Uso: %s\n" msgstr "Uso: %s\n"
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1935,10 +1864,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1996,10 +1921,6 @@ msgstr "Si está configurado para índices firmados, crear sólo índices sin fi
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
#, fuzzy #, fuzzy
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
@ -2152,10 +2073,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2332,11 +2249,6 @@ msgstr "directorio_copia_local tiene que ser un directorio, ¡no un archivo!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2497,11 +2409,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2516,11 +2423,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir no termina en \"fdroid\", quizá quiso escribir: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "librería compartida" msgstr "librería compartida"
@ -2725,31 +2627,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2760,11 +2637,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.0.6-349-g907c04ea\n" "Project-Id-Version: fdroidserver 1.0.6-349-g907c04ea\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2020-04-29 12:49+0000\n" "PO-Revision-Date: 2020-04-29 12:49+0000\n"
"Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n" "Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n"
"Language-Team: Spanish (Mexico) <https://hosted.weblate.org/projects/f-droid/fdroidserver/es_MX/>\n" "Language-Team: Spanish (Mexico) <https://hosted.weblate.org/projects/f-droid/fdroidserver/es_MX/>\n"
@ -91,11 +91,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: error: %(message)s\n" msgstr "%(prog)s: error: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -215,11 +210,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -297,10 +287,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -397,11 +383,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -572,16 +553,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -648,11 +619,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -819,10 +785,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -887,10 +849,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1096,10 +1054,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1237,10 +1191,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1399,10 +1349,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1436,10 +1382,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1689,10 +1631,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1854,10 +1792,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1890,10 +1824,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1923,10 +1853,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1984,10 +1910,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2137,10 +2059,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2315,11 +2233,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2478,11 +2391,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2497,10 +2405,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2705,31 +2609,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2740,11 +2619,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 2.0a0-62-gc63c4b3d\n" "Project-Id-Version: fdroidserver 2.0a0-62-gc63c4b3d\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n" "Last-Translator: Automatically generated\n"
"Language-Team: none\n" "Language-Team: none\n"
@ -89,11 +89,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -213,11 +208,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -295,10 +285,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -395,11 +381,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -566,16 +547,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -642,11 +613,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -813,10 +779,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -881,10 +843,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1090,10 +1048,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1231,10 +1185,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1393,10 +1343,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1430,10 +1376,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1683,10 +1625,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1848,10 +1786,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1884,10 +1818,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1917,10 +1847,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1978,10 +1904,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2131,10 +2053,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2309,11 +2227,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2471,11 +2384,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2490,10 +2398,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2698,31 +2602,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2733,11 +2612,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -1792,7 +1792,7 @@ msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet." msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py

View File

@ -5,9 +5,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 2.3a1\n" "Project-Id-Version: fdroidserver 2.2.1-143-g1a5ee449\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -91,11 +91,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -215,11 +210,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -297,10 +287,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -397,11 +383,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -568,16 +549,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -644,11 +615,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -815,10 +781,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -883,10 +845,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1092,10 +1050,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1233,10 +1187,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1395,10 +1345,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1432,10 +1378,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1685,10 +1627,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1850,10 +1788,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1886,10 +1820,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1919,10 +1849,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1980,10 +1906,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2133,10 +2055,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2311,11 +2229,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2473,11 +2386,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2492,10 +2400,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2700,31 +2604,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2735,11 +2614,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 2.0a0-62-gc63c4b3d\n" "Project-Id-Version: fdroidserver 2.0a0-62-gc63c4b3d\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2021-08-23 01:29+0000\n" "PO-Revision-Date: 2021-08-23 01:29+0000\n"
"Last-Translator: Kaantaja <ufdbvgoljrjkrkyyub@ianvvn.com>\n" "Last-Translator: Kaantaja <ufdbvgoljrjkrkyyub@ianvvn.com>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/f-droid/fdroidserver/fi/>\n" "Language-Team: Finnish <https://hosted.weblate.org/projects/f-droid/fdroidserver/fi/>\n"
@ -91,11 +91,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -215,11 +210,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -297,10 +287,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -397,11 +383,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -568,16 +549,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -644,11 +615,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -815,10 +781,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -883,10 +845,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1092,10 +1050,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1233,10 +1187,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1395,10 +1345,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1432,10 +1378,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1685,10 +1627,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1850,10 +1788,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1886,10 +1820,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1919,10 +1849,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1980,10 +1906,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2133,10 +2055,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2311,11 +2229,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2473,11 +2386,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2492,10 +2400,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2700,31 +2604,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2735,11 +2614,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -2,7 +2,7 @@
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# Julien Gontier <emeuraudeman@protonmail.com>, 2020. # Julien Gontier <emeuraudeman@protonmail.com>, 2020.
# anonymous <noreply@weblate.org>, 2020. # anonymous <noreply@weblate.org>, 2020.
# Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021, 2024. # Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021.
# Jeannette L <j.lavoie@net-c.ca>, 2020. # Jeannette L <j.lavoie@net-c.ca>, 2020.
# Nathan <bonnemainsnathan@gmail.com>, 2020. # Nathan <bonnemainsnathan@gmail.com>, 2020.
# Virgile L. <virgilelefevre313@gmail.com>, 2020. # Virgile L. <virgilelefevre313@gmail.com>, 2020.
@ -39,16 +39,16 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-10 13:33+0000\n" "PO-Revision-Date: 2023-07-31 20:06+0000\n"
"Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n" "Last-Translator: Translator <kvb@tuta.io>\n"
"Language-Team: French <https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/>\n" "Language-Team: French <https://hosted.weblate.org/projects/f-droid/fdroidserver/fr/>\n"
"Language: fr\n" "Language: fr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n" "Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 5.0-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -128,11 +128,6 @@ msgstr[1] "L'option %(option)s requiert %(number)d arguments"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: erreur: %(message)s\n" msgstr "%(prog)s: erreur: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -252,11 +247,6 @@ msgstr "/issues est manquant"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "Une URL est requise en argument !" msgstr "Une URL est requise en argument !"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Aucun certificat signé trouvé dans {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Ajouter des signatures PGP avec GnuPG pour les paquets dans le dépôt" msgstr "Ajouter des signatures PGP avec GnuPG pour les paquets dans le dépôt"
@ -334,11 +324,6 @@ msgstr "Lapplication possède des fichiers binaires mais n'a pas les AllowedA
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "L'application a NoSourceSince ou ArchivePolicy « 0 version » mais AutoUpdateMode ou UpdateCheckMode ne valent pas None" msgstr "L'application a NoSourceSince ou ArchivePolicy « 0 version » mais AutoUpdateMode ou UpdateCheckMode ne valent pas None"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "L'application a NoSourceSince ou ArchivePolicy « 0 version » mais AutoUpdateMode ou UpdateCheckMode ne valent pas None"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -435,11 +420,6 @@ msgstr "Catégories « %s » invalides"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "Catégories non définies" msgstr "Catégories non définies"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Vérifier les mises à jour pour les applications" msgstr "Vérifier les mises à jour pour les applications"
@ -606,16 +586,6 @@ msgstr "La description contient une liste (%s) mais ce n'est ni une liste à puc
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "La longueur de la description {length} dépasser la limite du nombre de caractères autorisés {limit}" msgstr "La longueur de la description {length} dépasser la limite du nombre de caractères autorisés {limit}"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Ne pas ajouter \"disable:\" aux entrées générées" msgstr "Ne pas ajouter \"disable:\" aux entrées générées"
@ -682,11 +652,6 @@ msgstr "Entrée doublon \"%s\" dans le paramétrage des miroirs !"
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Lien dupliqué dans « {field} » : {url}" msgstr "Lien dupliqué dans « {field} » : {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "ERREUR: La sous-commande \"server\" a été supprimée, utilisez plutôt \"deploy\"!" msgstr "ERREUR: La sous-commande \"server\" a été supprimée, utilisez plutôt \"deploy\"!"
@ -857,11 +822,6 @@ msgstr "Code de version invalide trouvée pour certaines application"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Plusieurs fichiers de bloc de signature JAR trouvé à {path}" msgstr "Plusieurs fichiers de bloc de signature JAR trouvé à {path}"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Plusieurs certificats de signature ont étés trouvés pour le référentiel."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -926,11 +886,6 @@ msgstr "Impossible de définir la branche par défaut du Git distant : \"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Reset de Git échouée" msgstr "Reset de Git échouée"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Échec de la mise à jour du sous-module Git"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Synchronisation du submodule Git échoué" msgstr "Synchronisation du submodule Git échoué"
@ -1099,7 +1054,7 @@ msgstr "Métadonnée de scrlib invalide : la clé '{key}' est inconnue dans '{fi
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, python-brace-format #, python-brace-format
msgid "JAR signature failed to verify: {path}" msgid "JAR signature failed to verify: {path}"
msgstr "La signature JAR n'a pas pu vérifier:{path}" msgstr "La signature JAR n'a pas pu vérifier:{path}"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, python-brace-format #, python-brace-format
@ -1136,10 +1091,6 @@ msgstr "Conserver la version ayant échoué « {apkfilename} »"
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Stockage des clés signée:\t" msgstr "Stockage des clés signée:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1277,11 +1228,6 @@ msgstr "Aucune étiquette trouvée"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Aucun dossier non signé — il n'y a rien à faire" msgstr "Aucun dossier non signé — il n'y a rien à faire"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "aucune information sur la version na été trouvée"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Définition de la taille invalide : \"{}\"" msgstr "Définition de la taille invalide : \"{}\""
@ -1440,11 +1386,6 @@ msgstr "Envoyer les logs dans ce dépôt git distant"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Envoyer les logs de transparence de la compilation vers {url}" msgstr "Envoyer les logs de transparence de la compilation vers {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Impossible de définir la branche par défaut du Git distant : \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1478,11 +1419,6 @@ msgstr "La lecture de packageName/versionCode/versionName a échoué, APK invali
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Lecture de {apkfilename} à partir du cache" msgstr "Lecture de {apkfilename} à partir du cache"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "recupération de la dernière version des signatures depuis le web"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Suppression des fichiers spécifiés" msgstr "Suppression des fichiers spécifiés"
@ -1732,13 +1668,6 @@ msgstr "Il y a une collision de keyalias — publication interrompue"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Voici les applications qui ont été archivées à partir du dépôt principal." msgstr "Voici les applications qui ont été archivées à partir du dépôt principal."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"ERREUR : cette commande ne devrait jamais être utilisée pour copier f-droid.org !\n"
"Une copie de f-droid.org occupe plus de 200GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Ceci est un dépôt dapplications à utiliser avec FDroid. Les applications publiées dans ce dépôt sont soit les binaires officiels compilés par les développeurs de ces applications, soit celles compilées par f-droid.org à partir des sources en utilisant les outils disponibles sur https://gitlab.com/fdroid." msgstr "Ceci est un dépôt dapplications à utiliser avec FDroid. Les applications publiées dans ce dépôt sont soit les binaires officiels compilés par les développeurs de ces applications, soit celles compilées par f-droid.org à partir des sources en utilisant les outils disponibles sur https://gitlab.com/fdroid."
@ -1909,13 +1838,8 @@ msgstr "UpdateCheckData doit utiliser une URL HTTPS: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData URL non valide : {url}" msgstr "UpdateCheckData URL non valide : {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode est configuré mais on dirait que checkupdates n'a pas encore été lancé"
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode est configuré mais on dirait que checkupdates n'a pas encore été lancé" msgstr "UpdateCheckMode est configuré mais on dirait que checkupdates n'a pas encore été lancé"
@ -1946,11 +1870,6 @@ msgstr "Usage"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Usage : %s\n" msgstr "Usage : %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Utiliser /HEAD plutôt que /master pour pointer un fichier dans la branche par défaut"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Utiliser /HEAD plutôt que /master pour pointer un fichier dans la branche par défaut" msgstr "Utiliser /HEAD plutôt que /master pour pointer un fichier dans la branche par défaut"
@ -1980,11 +1899,6 @@ msgstr "Utilisation de la signature d'APK v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Utilisation de la signature d'APK v3" msgstr "Utilisation de la signature d'APK v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Utilisation de la signature d'APK v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "L'utilisation de l'utilitaire jarsigner de Java n'est pas recommandé pour vérifier les APKs ! Utiliser apksigner" msgstr "L'utilisation de l'utilitaire jarsigner de Java n'est pas recommandé pour vérifier les APKs ! Utiliser apksigner"
@ -2042,10 +1956,6 @@ msgstr "Lorsqu'il est configuré pour les index signés, ne créez que des index
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Lors du linting, tout le dépôt yamllint est désactivé par défaut. Cette option force yamllint malgré tout." msgstr "Lors du linting, tout le dépôt yamllint est désactivé par défaut. Cette option force yamllint malgré tout."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'Nom distingué' utilisé lors de la génération des clés" msgstr "X.509 'Nom distingué' utilisé lors de la génération des clés"
@ -2080,7 +1990,7 @@ msgstr "option ambiguë : %(option)s peut correspondre à %(matches)s"
#: /usr/lib/python3.11/optparse.py #: /usr/lib/python3.11/optparse.py
#, python-format #, python-format
msgid "ambiguous option: %s (%s?)" msgid "ambiguous option: %s (%s?)"
msgstr "option ambiguë: %s (%s?)" msgstr "option ambiguë : %s (%s?)"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "apksigner not found! Cannot sign or verify modern APKs" msgid "apksigner not found! Cannot sign or verify modern APKs"
@ -2195,11 +2105,6 @@ msgstr "conflit de subparser : %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "impossible de lire '{path}'" msgstr "impossible de lire '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "impossible d'analyser la spécification srclib (pas de référence spécifiée): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "impossible d'analyser la spécification srclib (pas de référence spécifiée): '{}'" msgstr "impossible d'analyser la spécification srclib (pas de référence spécifiée): '{}'"
@ -2374,11 +2279,6 @@ msgstr "local_copy_dir doit être un dossier et non un fichier !"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "le miroir «%s» ne se termine pas par «fdroid» !" msgstr "le miroir «%s» ne se termine pas par «fdroid» !"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Maintenant, définissez-les dans config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2536,11 +2436,6 @@ msgstr "repo_icon \"repo/icons/%s\" n'existe pas, génération d'une icône de s
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url doit se terminer par /repo" msgstr "repo_url doit se terminer par /repo"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "ruamel.yaml nest pas installé, impossible décrire les métadonnées." msgstr "ruamel.yaml nest pas installé, impossible décrire les métadonnées."
@ -2555,11 +2450,6 @@ msgstr "s3cmd synchroniser les index de {path} vers {url} et les supprimer"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "l'analyse du cache est mal formée ! Vous pouvez le nettoyer avec : '{clear}'" msgstr "l'analyse du cache est mal formée ! Vous pouvez le nettoyer avec : '{clear}'"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir ne semble pas se terminer avec \"fdroid\", peut être voulez-vous dire: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "bibliothèque partagée" msgstr "bibliothèque partagée"
@ -2764,31 +2654,6 @@ msgstr "{path} nexiste pas ! Créez-le en exécutant :"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} a une mauvaise signature de fichier \"{pattern}\", possibilité d'une faille Janus !" msgstr "{path} a une mauvaise signature de fichier \"{pattern}\", possibilité d'une faille Janus !"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' n'est pas configuré dans 'config.yml' !"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2799,11 +2664,6 @@ msgstr "{path} a une taille nulle !"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} supérieur à 200MB, envoi manuel : {url}" msgstr "{path} supérieur à 200MB, envoi manuel : {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 2.0\n" "Project-Id-Version: fdroidserver 2.0\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2021-07-01 15:29+0000\n" "PO-Revision-Date: 2021-07-01 15:29+0000\n"
"Last-Translator: Vancha March <tjipkevdh@gmail.com>\n" "Last-Translator: Vancha March <tjipkevdh@gmail.com>\n"
"Language-Team: Frisian <https://hosted.weblate.org/projects/f-droid/fdroidserver/fy/>\n" "Language-Team: Frisian <https://hosted.weblate.org/projects/f-droid/fdroidserver/fy/>\n"
@ -90,11 +90,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: flater: %(message)s\n" msgstr "%(prog)s: flater: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -214,11 +209,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -296,10 +286,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -396,11 +382,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Kontrolearje op fernijingen fan applikaasjes" msgstr "Kontrolearje op fernijingen fan applikaasjes"
@ -567,16 +548,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -643,11 +614,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -814,10 +780,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -882,10 +844,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1091,10 +1049,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1232,10 +1186,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1394,10 +1344,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1431,10 +1377,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1684,10 +1626,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1849,10 +1787,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1885,10 +1819,6 @@ msgstr "Gebrûk"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Gebrûk: %s\n" msgstr "Gebrûk: %s\n"
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1918,10 +1848,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1979,10 +1905,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2132,10 +2054,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2310,11 +2228,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2473,11 +2386,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2492,10 +2400,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2700,31 +2604,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2735,11 +2614,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 2.1b0\n" "Project-Id-Version: fdroidserver 2.1b0\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2023-09-21 08:05+0000\n" "PO-Revision-Date: 2023-09-21 08:05+0000\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n" "Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: Hebrew <https://hosted.weblate.org/projects/f-droid/fdroidserver/he/>\n" "Language-Team: Hebrew <https://hosted.weblate.org/projects/f-droid/fdroidserver/he/>\n"
@ -91,11 +91,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: שגיאה: %(message)s\n" msgstr "%(prog)s: שגיאה: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -215,11 +210,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -297,10 +287,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -397,11 +383,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "איתור עדכונים ליישומונים" msgstr "איתור עדכונים ליישומונים"
@ -568,16 +549,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -644,11 +615,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -815,10 +781,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -883,10 +845,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1092,10 +1050,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1233,10 +1187,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1395,10 +1345,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1432,10 +1378,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1685,10 +1627,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1850,10 +1788,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1886,10 +1820,6 @@ msgstr "שימוש"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "שימוש: %s\n" msgstr "שימוש: %s\n"
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1919,10 +1849,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1980,10 +1906,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2133,10 +2055,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2311,11 +2229,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2473,11 +2386,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2492,10 +2400,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2700,31 +2604,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2735,11 +2614,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 2.0a5-27-gf24eae0f\n" "Project-Id-Version: fdroidserver 2.0a5-27-gf24eae0f\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2023-02-22 11:24+0000\n" "PO-Revision-Date: 2023-02-22 11:24+0000\n"
"Last-Translator: Saurmandal <saurmandal@protonmail.com>\n" "Last-Translator: Saurmandal <saurmandal@protonmail.com>\n"
"Language-Team: Hindi <https://hosted.weblate.org/projects/f-droid/fdroidserver/hi/>\n" "Language-Team: Hindi <https://hosted.weblate.org/projects/f-droid/fdroidserver/hi/>\n"
@ -91,11 +91,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -215,11 +210,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -297,10 +287,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -397,11 +383,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "अनुप्रयोगों के अपडेट के लिए जाँच करें" msgstr "अनुप्रयोगों के अपडेट के लिए जाँच करें"
@ -568,16 +549,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -644,11 +615,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -815,10 +781,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -883,10 +845,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1092,10 +1050,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1233,10 +1187,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1395,10 +1345,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1432,10 +1378,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1685,10 +1627,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1850,10 +1788,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1886,10 +1820,6 @@ msgstr "प्रयोग"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "प्रयोग: %s\n" msgstr "प्रयोग: %s\n"
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1919,10 +1849,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1980,10 +1906,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2133,10 +2055,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2311,11 +2229,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2474,11 +2387,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2493,10 +2401,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2701,31 +2605,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2736,11 +2615,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -1,22 +1,22 @@
# SOME DESCRIPTIVE TITLE. # SOME DESCRIPTIVE TITLE.
# This file is put in the public domain. # This file is put in the public domain.
# Balázs Meskó <meskobalazs@mailbox.org>, 2020, 2021. # Balázs Meskó <meskobalazs@mailbox.org>, 2020, 2021.
# Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021, 2022, 2024. # Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021, 2022.
# KissPandur <zoltankiss.web@gmail.com>, 2022. # KissPandur <zoltankiss.web@gmail.com>, 2022.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.0.6-70-g54bc858\n" "Project-Id-Version: fdroidserver 1.0.6-70-g54bc858\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-10 13:33+0000\n" "PO-Revision-Date: 2022-10-05 06:16+0000\n"
"Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n" "Last-Translator: KissPandur <zoltankiss.web@gmail.com>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/f-droid/fdroidserver/hu/>\n" "Language-Team: Hungarian <https://hosted.weblate.org/projects/f-droid/fdroidserver/hu/>\n"
"Language: hu\n" "Language: hu\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 4.14.1\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -96,11 +96,6 @@ msgstr[1] "A(z) %(option)s kapcsoló %(number)d argumentumot igényel"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: hiba: %(message)s\n" msgstr "%(prog)s: hiba: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -199,7 +194,7 @@ msgstr "A(z) „{value}” nem érvényes {field} érték itt: {appid}. Regex mi
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "'{value}' is not a valid {field}, should be {pattern}" msgid "'{value}' is not a valid {field}, should be {pattern}"
msgstr "A(z) „{value}” nem érvényes {field} érték itt: minta: {pattern}" msgstr "A(z) „{value}” nem érvényes {field} érték itt: {appid}. Regex minta: {pattern}"
#: ../fdroidserver/checkupdates.py #: ../fdroidserver/checkupdates.py
#, python-brace-format #, python-brace-format
@ -220,11 +215,6 @@ msgstr "a /issues hiányzik"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "Az URL argumentumként megadása szükséges." msgstr "Az URL argumentumként megadása szükséges."
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Nem található aláíró-tanúsítvány itt: {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "PGP aláírások hozzáadása GnuPG segítségével a tároló csomagjaihoz" msgstr "PGP aláírások hozzáadása GnuPG segítségével a tároló csomagjaihoz"
@ -302,10 +292,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -402,11 +388,6 @@ msgstr "A(z) „%s” kategória érvénytelen"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "A kategóriák nincsenek megadva" msgstr "A kategóriák nincsenek megadva"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Alkalmazásfrissítések keresése" msgstr "Alkalmazásfrissítések keresése"
@ -574,16 +555,6 @@ msgstr "A leírás listát (%s) tartalmaz, de nem pontozott (*) vagy számozott
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "A leírás {length} karakteres hossza több, mint a {limit} karakteres korlát" msgstr "A leírás {length} karakteres hossza több, mint a {limit} karakteres korlát"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Ne adja a hozzá a „disable:” szöveget az előállított összeállítási elemekhez" msgstr "Ne adja a hozzá a „disable:” szöveget az előállított összeállítási elemekhez"
@ -650,11 +621,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Ismételt hivatkozás a(z) „{field}” mezőben: {url}" msgstr "Ismételt hivatkozás a(z) „{field}” mezőben: {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "HIBA: A „server” alparancs eltávolításra került, használja ezt: „deploy”!" msgstr "HIBA: A „server” alparancs eltávolításra került, használja ezt: „deploy”!"
@ -826,11 +792,6 @@ msgstr "Egyes alkalmazásoknál érvénytelen versionCode paraméterek találhat
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Több JAR aláírásblokkfájl található itt: {path}" msgstr "Több JAR aláírásblokkfájl található itt: {path}"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Több aláíró-tanúsítvány található a tárolóhoz."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -857,7 +818,7 @@ msgstr "{apkfilename} található itt: {url}"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Found {count} problems in {filename}" msgid "Found {count} problems in {filename}"
msgstr "Az átvizsgáló {count} problémát talált a(z) „{filename}” alkalmazásban" msgstr "Az átvizsgáló {count} problémát talált a(z) „{appid}” alkalmazásban:"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, python-brace-format
@ -896,11 +857,6 @@ msgstr "A git távoli fej beállítás sikertelen: „%s”"
msgid "Git reset failed" msgid "Git reset failed"
msgstr "A git helyreállítás sikertelen" msgstr "A git helyreállítás sikertelen"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "A git almodul frissítése sikertelen"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "A git almodul szinkronizációs sikertelen" msgstr "A git almodul szinkronizációs sikertelen"
@ -1020,7 +976,7 @@ msgstr "Érvénytelen VercodeOperation: {field}"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Invalid VercodeOperation: {invalid_ops}" msgid "Invalid VercodeOperation: {invalid_ops}"
msgstr "Érvénytelen VercodeOperation: {invalid_ops}" msgstr "Érvénytelen VercodeOperation: {field}"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, python-brace-format #, python-brace-format
@ -1106,10 +1062,6 @@ msgstr "A minSdkVersion olvasása sikertelen: „{apkfilename}”"
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Kulcstároló az aláírókulcshoz:\t" msgstr "Kulcstároló az aláírókulcshoz:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1249,11 +1201,6 @@ msgstr "Nem található csatolt eszköz"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Nincs aláíratlan könyvtár nincs teendő" msgstr "Nincs aláíratlan könyvtár nincs teendő"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "Nem található információ."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Nem érvényes méretmegadás: „{}”" msgstr "Nem érvényes méretmegadás: „{}”"
@ -1412,11 +1359,6 @@ msgstr "A napló beküldése ebbe a távoli git tárolóba"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "A bináris átláthatósági napló beküldése ide: {url}" msgstr "A bináris átláthatósági napló beküldése ide: {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "A git távoli fej beállítás sikertelen: „%s”"
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1450,10 +1392,6 @@ msgstr "A packageName/versionCode/versionName olvasása sikertelen, az APK érv
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "A(z) {apkfilename} olvasása gyorsítótárból" msgstr "A(z) {apkfilename} olvasása gyorsítótárból"
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Megadott fájlok eltávolítása" msgstr "Megadott fájlok eltávolítása"
@ -1530,7 +1468,7 @@ msgstr "A csomag forráskódjának átvizsgálása"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Scanner found {count} problems in {apk}" msgid "Scanner found {count} problems in {apk}"
msgstr "Az átvizsgáló {count} problémát talált a(z) „{apk}” alkalmazásban" msgstr "Az átvizsgáló {count} problémát talált a(z) „{appid}” alkalmazásban:"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, python-brace-format
@ -1704,13 +1642,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"HIBA: a parancsot sose használja az f-droid.org tükrözéséhez.\n"
"Az f-droid.org teljes tükrözéséhez több mint 200 GB tárhely szükséges."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1872,10 +1803,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1908,10 +1835,6 @@ msgstr "Használat"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Használat: %s\n" msgstr "Használat: %s\n"
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1941,10 +1864,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -2002,10 +1921,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2155,10 +2070,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2271,7 +2182,7 @@ msgstr "az index-v1-nek kell legyen aláírása, használja az „fdroid signind
#: ../fdroidserver/index.py #: ../fdroidserver/index.py
#, fuzzy #, fuzzy
msgid "index-v2 must have a signature, use `fdroid signindex` to create it!" msgid "index-v2 must have a signature, use `fdroid signindex` to create it!"
msgstr "az index-v1-nek kell legyen aláírása, használja az `fdroid signindex` parancsot a létrehozásához!" msgstr "az index-v1-nek kell legyen aláírása, használja az „fdroid signindex” parancsot a létrehozásához."
#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py
#: /usr/lib/python3.7/optparse.py /usr/lib/python3.9/optparse.py #: /usr/lib/python3.7/optparse.py /usr/lib/python3.9/optparse.py
@ -2334,11 +2245,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Most adja meg ezeket a config.yml fájlban:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2497,11 +2403,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2516,10 +2417,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2724,31 +2621,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "Az „sdk_path” nincs megadva a „config.yml” fájlban."
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2759,11 +2631,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.1-680-ge1d3de71\n" "Project-Id-Version: fdroidserver 1.1-680-ge1d3de71\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2021-06-23 23:32+0000\n" "PO-Revision-Date: 2021-06-23 23:32+0000\n"
"Last-Translator: whenwesober <naomi16i_1298q@cikuh.com>\n" "Last-Translator: whenwesober <naomi16i_1298q@cikuh.com>\n"
"Language-Team: Indonesian <https://hosted.weblate.org/projects/f-droid/fdroidserver/id/>\n" "Language-Team: Indonesian <https://hosted.weblate.org/projects/f-droid/fdroidserver/id/>\n"
@ -95,11 +95,6 @@ msgstr[0] "opsi %(option)s memerlukan argumen sebanyak %(number)d"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: galat: %(message)s\n" msgstr "%(prog)s: galat: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -219,11 +214,6 @@ msgstr "/issues tidak ada"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "URL diperlukan sebagai argumen!" msgstr "URL diperlukan sebagai argumen!"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Tambah tanda tangan PGP menggunakan GnuPG untuk paket di repo" msgstr "Tambah tanda tangan PGP menggunakan GnuPG untuk paket di repo"
@ -301,10 +291,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -400,11 +386,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Periksa pembaruan pada aplikasi" msgstr "Periksa pembaruan pada aplikasi"
@ -571,16 +552,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -647,11 +618,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -818,10 +784,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -886,10 +848,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1095,10 +1053,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1236,10 +1190,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1398,10 +1348,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1435,10 +1381,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1687,10 +1629,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1852,10 +1790,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1888,10 +1822,6 @@ msgstr "Penggunaan"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Penggunaan: %s\n" msgstr "Penggunaan: %s\n"
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1921,10 +1851,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1982,10 +1908,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2134,10 +2056,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2311,11 +2229,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2474,11 +2387,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2493,10 +2401,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2700,31 +2604,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' belum diatur di config.yml!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2735,11 +2614,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -16,13 +16,13 @@
# Davide Neri <davnerix@gmail.com>, 2023. # Davide Neri <davnerix@gmail.com>, 2023.
# Mirko Di <mirko@mirkodi.eu>, 2023. # Mirko Di <mirko@mirkodi.eu>, 2023.
# coronabond <coronabond@airmail.cc>, 2023. # coronabond <coronabond@airmail.cc>, 2023.
# Random <random-r@users.noreply.hosted.weblate.org>, 2023, 2024. # Random <random-r@users.noreply.hosted.weblate.org>, 2023.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-13 17:01+0000\n" "PO-Revision-Date: 2023-09-06 17:31+0000\n"
"Last-Translator: Random <random-r@users.noreply.hosted.weblate.org>\n" "Last-Translator: Random <random-r@users.noreply.hosted.weblate.org>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/f-droid/fdroidserver/it/>\n" "Language-Team: Italian <https://hosted.weblate.org/projects/f-droid/fdroidserver/it/>\n"
"Language: it\n" "Language: it\n"
@ -30,7 +30,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 5.0.1-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -110,11 +110,6 @@ msgstr[1] "l'opzione %(option)s richiede gli argomenti %(number)d"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: errore: %(message)s\n" msgstr "%(prog)s: errore: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -234,11 +229,6 @@ msgstr "/issues è mancante"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "È richiesto un URL come argomento!" msgstr "È richiesto un URL come argomento!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Nessun certificato di firma trovato in {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Aggiungi firme PGP con GnuPG per i pacchetti in un repository" msgstr "Aggiungi firme PGP con GnuPG per i pacchetti in un repository"
@ -316,11 +306,6 @@ msgstr "L'app ha Binaries ma non ha AllowedAPKSigningKeys corrispondente per fis
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "L'app ha NoSourceSince o ArchivePolicy \"0 versioni\" ma AutoUpdateMode o UpdateCheckMode non sono None" msgstr "L'app ha NoSourceSince o ArchivePolicy \"0 versioni\" ma AutoUpdateMode o UpdateCheckMode non sono None"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "L'app ha NoSourceSince o ArchivePolicy \"0 versioni\" ma AutoUpdateMode o UpdateCheckMode non sono None"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -417,11 +402,6 @@ msgstr "La categoria \"%s\" non è valida"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "Le categorie non sono impostate" msgstr "Le categorie non sono impostate"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Cerca gli aggiornamenti delle applicazioni" msgstr "Cerca gli aggiornamenti delle applicazioni"
@ -588,16 +568,6 @@ msgstr "La descrizione ha un elenco (%s) ma non è puntato (*) né numerato (#)"
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "La descrizione di lunghezza {length} supera il limite di {limit} caratteri" msgstr "La descrizione di lunghezza {length} supera il limite di {limit} caratteri"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Non aggiungere 'disable:' alle voci di compilazione generate" msgstr "Non aggiungere 'disable:' alle voci di compilazione generate"
@ -664,11 +634,6 @@ msgstr "Voce \"%s\" duplicata nella configurazione dei mirror!"
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Link duplicato in '{field}': {url}" msgstr "Link duplicato in '{field}': {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "ERRORE: il sottocomando \"server\" è stato rimosso, usa \"deploy\"!" msgstr "ERRORE: il sottocomando \"server\" è stato rimosso, usa \"deploy\"!"
@ -839,11 +804,6 @@ msgstr "Trovati codici di versione non validi per alcune app"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Trovati più file di blocco della firma JAR in {path}" msgstr "Trovati più file di blocco della firma JAR in {path}"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Trovati più certificati di firma per il repository."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -908,11 +868,6 @@ msgstr "Set-head remoto Git non riuscito: \"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Ripristino Git non riuscito" msgstr "Ripristino Git non riuscito"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Aggiornamento del sottomodulo Git non riuscito"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Sincronizzazione del sottomodulo Git non riuscita" msgstr "Sincronizzazione del sottomodulo Git non riuscita"
@ -1118,10 +1073,6 @@ msgstr "Mantenimento della build fallita \"{apkfilename}\""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Keystore per la firma della chiave:\t" msgstr "Keystore per la firma della chiave:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1259,11 +1210,6 @@ msgstr "Nessuna etichetta trovata"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Nessuna directory non firmata - niente da fare" msgstr "Nessuna directory non firmata - niente da fare"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "nessuna informazione sulla versione trovata"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Definizione di dimensione non valida: \"{}\"" msgstr "Definizione di dimensione non valida: \"{}\""
@ -1422,11 +1368,6 @@ msgstr "Esegui il push del log in questo repository git remoto"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Invio del log di trasparenza binaria su {url}" msgstr "Invio del log di trasparenza binaria su {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Set-head remoto Git non riuscito: \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1460,11 +1401,6 @@ msgstr "Lettura di packageName/versionCode/versionName non riuscita, APK non val
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Lettura di {apkfilename} dalla cache" msgstr "Lettura di {apkfilename} dalla cache"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "recupera l'ultima versione delle firme dal web"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Rimozione dei file specificati" msgstr "Rimozione dei file specificati"
@ -1714,13 +1650,6 @@ msgstr "C'è una collisione keyalias - pubblicazione interrotta"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Queste sono le applicazioni che sono state archiviate dal repo principale." msgstr "Queste sono le applicazioni che sono state archiviate dal repo principale."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"ERRORE: questo comando non deve mai essere utilizzato per il mirror f-droid.org!\n"
"Lintero mirror di f-droid.org richiede più di 200GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Questo è un repository di applicazioni da utilizzare con F-Droid. Le applicazioni in questo repository sono o binari ufficiali compilati dagli sviluppatori dell'applicazione originale, o sono binari compilati dai sorgenti dall'amministratore di f-droid.org usando gli strumenti su https://gitlab.com/fdroid." msgstr "Questo è un repository di applicazioni da utilizzare con F-Droid. Le applicazioni in questo repository sono o binari ufficiali compilati dagli sviluppatori dell'applicazione originale, o sono binari compilati dai sorgenti dall'amministratore di f-droid.org usando gli strumenti su https://gitlab.com/fdroid."
@ -1889,15 +1818,10 @@ msgstr "UpdateCheckData deve usare l'URL HTTPS: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData non è un URL valido: {url}" msgstr "UpdateCheckData non è un URL valido: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode impostato ma sembra che checkupdates non sia ancora stato eseguito."
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode impostato ma sembra che checkupdates non sia ancora stato eseguito." msgstr "UpdateCheckMode impostato ma sembra che checkupdates non sia ancora stato eseguito"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckName is set to the known application ID, it can be removed" msgid "UpdateCheckName is set to the known application ID, it can be removed"
@ -1926,11 +1850,6 @@ msgstr "Uso"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Utilizzo: %s\n" msgstr "Utilizzo: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Usare /HEAD invece di /master per puntare a un file nel ramo predefinito"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Usare /HEAD invece di /master per puntare a un file nel ramo predefinito" msgstr "Usare /HEAD invece di /master per puntare a un file nel ramo predefinito"
@ -1960,11 +1879,6 @@ msgstr "Usare la firma APK v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Usare la firma APK v3" msgstr "Usare la firma APK v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Usare la firma APK v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Utilizzando jarsigner di Java, non raccomandato per verificare APK! Utilizzare apksigner" msgstr "Utilizzando jarsigner di Java, non raccomandato per verificare APK! Utilizzare apksigner"
@ -2022,10 +1936,6 @@ msgstr "Se configurato per indici firmati, crea solo indici senza segno in quest
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Quando linting l'intero repository yamllint è disabilitato per impostazione predefinita. Questa opzione costringe yamllint a prescindere." msgstr "Quando linting l'intero repository yamllint è disabilitato per impostazione predefinita. Questa opzione costringe yamllint a prescindere."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'Distinguished Name' usato quando si generano le chiavi" msgstr "X.509 'Distinguished Name' usato quando si generano le chiavi"
@ -2175,11 +2085,6 @@ msgstr "subparser in conflitto: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "non ha potuto analizzare '{path}'" msgstr "non ha potuto analizzare '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "non ha potuto analizzare la specifica srclib (nessun riferimento specificato): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "non ha potuto analizzare la specifica srclib (nessun riferimento specificato): '{}'" msgstr "non ha potuto analizzare la specifica srclib (nessun riferimento specificato): '{}'"
@ -2354,11 +2259,6 @@ msgstr "local_copy_dir deve essere una cartella, non un file!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "il mirror '%s' non finisce con 'fdroid'!" msgstr "il mirror '%s' non finisce con 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Ora imposta i seguenti campi in config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2516,11 +2416,6 @@ msgstr "repo_icon \"repo/icons/%s\" non esiste, genera un segnaposto."
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "Il repo_url deve terminare con /repo" msgstr "Il repo_url deve terminare con /repo"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "ruamel.yaml non installato, non può scrivere metadati." msgstr "ruamel.yaml non installato, non può scrivere metadati."
@ -2535,11 +2430,6 @@ msgstr "s3cmd sincronizza gli indici {path} con {url} e cancella"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "la cache dello scanner è malformata! Puoi svuotarla con: '{clear}'" msgstr "la cache dello scanner è malformata! Puoi svuotarla con: '{clear}'"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir not finisce con \"fdroid\", forse intendevi: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "libreria condivisa" msgstr "libreria condivisa"
@ -2744,31 +2634,6 @@ msgstr "{path} non esiste! Crealo eseguendo:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} ha una cattiva firma di file \"{pattern}\", possibile exploit di Janus!" msgstr "{path} ha una cattiva firma di file \"{pattern}\", possibile exploit di Janus!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "\"sdk_path\" non impostato in config.yml!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2779,11 +2644,6 @@ msgstr "{path} è di dimensioni zero!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} più di 200MB, caricare manualmente: {url}" msgstr "{path} più di 200MB, caricare manualmente: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -1786,7 +1786,7 @@ msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet." msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2021-01-15 13:25+0000\n" "PO-Revision-Date: 2021-01-15 13:25+0000\n"
"Last-Translator: R_SACI <rgebbid@gmail.com>\n" "Last-Translator: R_SACI <rgebbid@gmail.com>\n"
"Language-Team: Kabyle <https://hosted.weblate.org/projects/f-droid/fdroidserver/kab/>\n" "Language-Team: Kabyle <https://hosted.weblate.org/projects/f-droid/fdroidserver/kab/>\n"
@ -92,11 +92,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: tuccḍa: %(message)s\n" msgstr "%(prog)s: tuccḍa: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -216,11 +211,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -298,10 +288,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -398,11 +384,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -570,16 +551,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -646,11 +617,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -817,10 +783,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -886,11 +848,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Asfaḍ Git yecceḍ"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1096,10 +1053,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1237,10 +1190,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1399,10 +1348,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1436,10 +1381,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1689,10 +1630,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1854,10 +1791,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1890,10 +1823,6 @@ msgstr "Aseqdec"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Aseqdec: %s\n" msgstr "Aseqdec: %s\n"
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1923,10 +1852,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1984,10 +1909,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2137,10 +2058,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2315,11 +2232,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2478,11 +2390,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2497,10 +2404,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2705,31 +2608,6 @@ msgstr "{path} ur yelli ara! Rnu-t s uselkem:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' ur yettwasbadu ara 'config.yml'!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2740,11 +2618,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -1,13 +1,13 @@
# SOME DESCRIPTIVE TITLE. # SOME DESCRIPTIVE TITLE.
# This file is put in the public domain. # This file is put in the public domain.
# Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021, 2022, 2024. # Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021, 2022.
# Myeongjin Lee <aranet100@gmail.com>, 2021. # Myeongjin Lee <aranet100@gmail.com>, 2021.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.8-135-g16dd6d28\n" "Project-Id-Version: fdroidserver 0.8-135-g16dd6d28\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-10 13:33+0000\n" "PO-Revision-Date: 2022-09-06 14:30+0000\n"
"Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n" "Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/f-droid/fdroidserver/ko/>\n" "Language-Team: Korean <https://hosted.weblate.org/projects/f-droid/fdroidserver/ko/>\n"
"Language: ko\n" "Language: ko\n"
@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 4.14.1-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -94,11 +94,6 @@ msgstr[0] "%(option)s 옵션은 %(number)d 인자가 필요합니다"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: 오류: %(message)s\n" msgstr "%(prog)s: 오류: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -197,7 +192,7 @@ msgstr "'{value}'는 {appid}에서 올바른 {field}가 아닙니다. 정규식
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "'{value}' is not a valid {field}, should be {pattern}" msgid "'{value}' is not a valid {field}, should be {pattern}"
msgstr "'{value}'에서 올바른 {field}가 아닙니다. 정규식 패턴: {pattern}" msgstr "'{value}'는 {appid}에서 올바른 {field}가 아닙니다. 정규식 패턴: {pattern}"
#: ../fdroidserver/checkupdates.py #: ../fdroidserver/checkupdates.py
#, python-brace-format #, python-brace-format
@ -218,11 +213,6 @@ msgstr "/이슈가 없습니다"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "URL은 인수로서 필요합니다!" msgstr "URL은 인수로서 필요합니다!"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "저장소의 패키지를 위해 GnuPG를 사용하여 PGP 서명을 추가합니다" msgstr "저장소의 패키지를 위해 GnuPG를 사용하여 PGP 서명을 추가합니다"
@ -300,10 +290,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -399,11 +385,6 @@ msgstr "카테고리 '%s'는 올바르지 않습니다"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "카테고리가 설정되어 있지 않습니다" msgstr "카테고리가 설정되어 있지 않습니다"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "애플리케이션으로의 업데이트를 확인합니다" msgstr "애플리케이션으로의 업데이트를 확인합니다"
@ -570,16 +551,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -646,11 +617,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -817,10 +783,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -886,11 +848,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "git svn 복제에 실패됨"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1010,7 +967,7 @@ msgstr "잘못된 Vercode연산: {field}"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Invalid VercodeOperation: {invalid_ops}" msgid "Invalid VercodeOperation: {invalid_ops}"
msgstr "잘못된 VercodeOperation연산: {invalid_ops}" msgstr "잘못된 Vercode연산: {field}"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, python-brace-format #, python-brace-format
@ -1096,10 +1053,6 @@ msgstr "삭제 중: repo/{apkfilename}"
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "서명 키를 위한 키저장소:\t" msgstr "서명 키를 위한 키저장소:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1237,11 +1190,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "버전 정보를 찾지 못했습니다"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1400,10 +1348,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1437,10 +1381,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1689,10 +1629,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1854,10 +1790,6 @@ msgstr "UpdateCheckData는 HTTPS URL을 사용해야 합니다: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData는 올바른 URL이 아닙니다: {url}" msgstr "UpdateCheckData는 올바른 URL이 아닙니다: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1890,10 +1822,6 @@ msgstr "사용법"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "사용법: %s\n" msgstr "사용법: %s\n"
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1923,10 +1851,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Java의 jarsigner를 사용하여, APK를 검증하는 것은 권장되지 않습니다! apksigner를 사용하세요" msgstr "Java의 jarsigner를 사용하여, APK를 검증하는 것은 권장되지 않습니다! apksigner를 사용하세요"
@ -1984,10 +1908,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2136,10 +2056,6 @@ msgstr "충돌하는 옵션 문자열: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2314,11 +2230,6 @@ msgstr "local_copy_dir는 파일이 아니라, 디렉터리여야 합니다!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "미러 '%s'는 'fdroid'로 끝나지 않습니다!" msgstr "미러 '%s'는 'fdroid'로 끝나지 않습니다!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2477,11 +2388,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2496,10 +2402,6 @@ msgstr "s3cmd 동기화는 {url}로 {path}를 색인하고 삭제합나다"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2703,31 +2605,6 @@ msgstr "{path}는 존재하지 않습니다! 실행하여 그것을 만드세
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path'가 config.yml에서 설정되어 있지 않습니다!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2738,11 +2615,6 @@ msgstr "{path}는 영 크기입니다!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.0.6-70-g54bc858\n" "Project-Id-Version: fdroidserver 1.0.6-70-g54bc858\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2023-06-23 14:52+0000\n" "PO-Revision-Date: 2023-06-23 14:52+0000\n"
"Last-Translator: abe1242 <abmdn1242@gmail.com>\n" "Last-Translator: abe1242 <abmdn1242@gmail.com>\n"
"Language-Team: Malayalam <https://hosted.weblate.org/projects/f-droid/fdroidserver/ml/>\n" "Language-Team: Malayalam <https://hosted.weblate.org/projects/f-droid/fdroidserver/ml/>\n"
@ -95,11 +95,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -219,11 +214,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -301,10 +291,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -401,11 +387,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -572,16 +553,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -648,11 +619,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -819,10 +785,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -887,10 +849,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1096,10 +1054,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1237,10 +1191,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1399,10 +1349,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1436,10 +1382,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1689,10 +1631,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1857,10 +1795,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1893,10 +1827,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1926,10 +1856,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1987,10 +1913,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2140,10 +2062,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2318,11 +2236,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2480,11 +2393,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2499,10 +2407,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2707,31 +2611,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2742,11 +2621,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.8-74-ga380b9f\n" "Project-Id-Version: fdroidserver 0.8-74-ga380b9f\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2022-09-06 14:30+0000\n" "PO-Revision-Date: 2022-09-06 14:30+0000\n"
"Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n" "Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/>\n" "Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/f-droid/fdroidserver/nb_NO/>\n"
@ -97,11 +97,6 @@ msgstr[1] "%(option)s-valget krever %(number)d argumenter"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: feil: %(message)s\n" msgstr "%(prog)s: feil: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -224,11 +219,6 @@ msgstr "/issues mangler"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "valg -%s krever et argument" msgstr "valg -%s krever et argument"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Ingen signeringssertifikater funnet i {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Legg til PGP-signaturer for pakker i pakkebrønnen ved bruk av GnuPG" msgstr "Legg til PGP-signaturer for pakker i pakkebrønnen ved bruk av GnuPG"
@ -307,10 +297,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -409,11 +395,6 @@ msgstr "Kategorien '%s' er ikke gyldig"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "Kategoreier ikke satt" msgstr "Kategoreier ikke satt"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Se etter programoppdateringer" msgstr "Se etter programoppdateringer"
@ -587,16 +568,6 @@ msgstr "Beskrivelsen har en liste (%s), men er ikke punktvis (*) eller nummerert
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "Beskrivelse av lengde {length} overstiger {limit} tegngrensen" msgstr "Beskrivelse av lengde {length} overstiger {limit} tegngrensen"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Ikke legg til «deaktivert:» blant genererte bygg" msgstr "Ikke legg til «deaktivert:» blant genererte bygg"
@ -665,11 +636,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Dobbeltlenke i \"{field}\": {url}" msgstr "Dobbeltlenke i \"{field}\": {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
#, fuzzy #, fuzzy
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
@ -848,11 +814,6 @@ msgstr "Noen programmer ble funnet å ha ugldige versionCodes"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Fant flere signeringssertifikater i {path}." msgstr "Fant flere signeringssertifikater i {path}."
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Fant flere signeringssertifikater for pakkebrønn."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -919,11 +880,6 @@ msgstr "Git set-head annensteds hen mislyktes: «%s»"
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Git-tilbakestilling mislyktes" msgstr "Git-tilbakestilling mislyktes"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Git-oppdatering av undermodul mislyktes"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Git-synkronisering av undermodul mislyktes" msgstr "Git-synkronisering av undermodul mislyktes"
@ -1137,10 +1093,6 @@ msgstr "Kunne ikke lese minSdkVersion: \"{apkfilename}\""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Nøkkellager for signeringsnøkkel:\t" msgstr "Nøkkellager for signeringsnøkkel:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1286,11 +1238,6 @@ msgstr "Fant ingen tilknyttede enheter"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Ingen usignert mappe - ingenting å gjøre" msgstr "Ingen usignert mappe - ingenting å gjøre"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "ingen versjonsinfo funnet!"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Ikke en gyldig størrelsesdefinisjon: «{}»" msgstr "Ikke en gyldig størrelsesdefinisjon: «{}»"
@ -1457,11 +1404,6 @@ msgstr "Dytt loggen til denne Git-pakkebrønnen annensteds hen"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Dytter binærgjennomsiktighetslogg til {url}." msgstr "Dytter binærgjennomsiktighetslogg til {url}."
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Git set-head annensteds hen mislyktes: «%s»"
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1495,10 +1437,6 @@ msgstr "Kunne ikke lese packageName/versionCode/versionName, APK ugyldig: \"{apk
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Behandler {apkfilename}" msgstr "Behandler {apkfilename}"
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Fjerner angitte filer" msgstr "Fjerner angitte filer"
@ -1756,13 +1694,6 @@ msgstr "Nøkkelaliaskollisjon - offentliggjøring stanset"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"Feil: Denne kommandoen bør aldri brukes til å speile f-droid.org.\n"
"Et helt speil av f-droid.org krever mer enn 200GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1928,10 +1859,6 @@ msgstr "UpdateCheckData må bruke HTTPS-nettadresse: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData er ikke en gyldig nettadresse: {url}" msgstr "UpdateCheckData er ikke en gyldig nettadresse: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1965,11 +1892,6 @@ msgstr "Bruk"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Bruk: %s\n" msgstr "Bruk: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Bruk /HEAD istedenfor /master for å peke til en fil i forvalgt forgrening"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Bruk /HEAD istedenfor /master for å peke til en fil i forvalgt forgrening" msgstr "Bruk /HEAD istedenfor /master for å peke til en fil i forvalgt forgrening"
@ -2001,11 +1923,6 @@ msgstr "Bruker APK Signature v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Bruker APK Signature v3" msgstr "Bruker APK Signature v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Bruker APK Signature v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, fuzzy #, fuzzy
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
@ -2065,10 +1982,6 @@ msgstr "Når oppsatt for signerte indekser, vil kun usignerte indekser bli oppre
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 \"Entydig navn\" (DN) brukt ved generering av nøkler." msgstr "X.509 \"Entydig navn\" (DN) brukt ved generering av nøkler."
@ -2225,10 +2138,6 @@ msgstr "konflikterende valgstreng: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "kunne ikke tolke'{path}'" msgstr "kunne ikke tolke'{path}'"
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2411,11 +2320,6 @@ msgstr "local_copy_dir må være ei mappe, ikke ei fil!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "speilet \"%s\" slutter ikke med \"fdroid\"." msgstr "speilet \"%s\" slutter ikke med \"fdroid\"."
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Nå må du sette disse i config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2576,11 +2480,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, fuzzy #, fuzzy
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
@ -2596,11 +2495,6 @@ msgstr "s3cmd synkroniserer indekser {path} til {url} og sletter"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir slutter ikke med \"fdroid\", kanskje du mente: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "delt bibliotek" msgstr "delt bibliotek"
@ -2808,31 +2702,6 @@ msgstr "{path} finnes ikke. Opprett den ved å kjøre:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} har feilaktig filsignatur \"{pattern}\", mulig Janus-utnyttelse." msgstr "{path} har feilaktig filsignatur \"{pattern}\", mulig Janus-utnyttelse."
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' ble ikke funnet i config.yml!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2843,11 +2712,6 @@ msgstr "{path} er null størrelse."
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} er mer enn 200MB, last opp manuelt: {url}" msgstr "{path} er mer enn 200MB, last opp manuelt: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -1791,7 +1791,7 @@ msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet." msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py

View File

@ -4,21 +4,21 @@
# Michal L <michalrmsmi@wp.pl>, 2020, 2021. # Michal L <michalrmsmi@wp.pl>, 2020, 2021.
# mondstern <mondstern@snopyta.org>, 2021. # mondstern <mondstern@snopyta.org>, 2021.
# Hans-Christoph Steiner <hans@guardianproject.info>, 2021. # Hans-Christoph Steiner <hans@guardianproject.info>, 2021.
# Agnieszka C <aga_04@o2.pl>, 2021, 2022, 2023, 2024. # Agnieszka C <aga_04@o2.pl>, 2021, 2022, 2023.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n" "Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-10 18:44+0000\n" "PO-Revision-Date: 2023-05-26 19:39+0000\n"
"Last-Translator: Agnieszka C <aga_04@o2.pl>\n" "Last-Translator: Agnieszka C <aga_04@o2.pl>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/>\n" "Language-Team: Polish <https://hosted.weblate.org/projects/f-droid/fdroidserver/pl/>\n"
"Language: pl\n" "Language: pl\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 4.18-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -99,11 +99,6 @@ msgstr[2] "%(option)s opcje wymagają %(number)d argumentów"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: błąd: %(message)s\n" msgstr "%(prog)s: błąd: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -223,11 +218,6 @@ msgstr "/nie ma problemów"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "Adres URL jest wymagany jako argument!" msgstr "Adres URL jest wymagany jako argument!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Nie znaleziono certyfikatów do podpisu w {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Dodaj podpisy PGP za pomocą GnuPG dla pakietów w repozytorium" msgstr "Dodaj podpisy PGP za pomocą GnuPG dla pakietów w repozytorium"
@ -305,11 +295,6 @@ msgstr "Aplikacja ma Binaries, ale nie ma odpowiednich kluczy AllowedAPKSingKeys
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Aplikacja ma NoSourceSince lub ArchivePolicy „0 versions”, ale AutoUpdateMode lub UpdateCheckMode nie są None" msgstr "Aplikacja ma NoSourceSince lub ArchivePolicy „0 versions”, ale AutoUpdateMode lub UpdateCheckMode nie są None"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Aplikacja ma NoSourceSince lub ArchivePolicy „0 versions”, ale AutoUpdateMode lub UpdateCheckMode nie są None"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -407,11 +392,6 @@ msgstr "Kategorie '%s' są nieprawidłowe"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "Kategorie nie są ustawione" msgstr "Kategorie nie są ustawione"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Sprawdź aktualizacje aplikacji" msgstr "Sprawdź aktualizacje aplikacji"
@ -578,16 +558,6 @@ msgstr "Opis ma listę (%s), ale nie jest wypunktowana (*) ani ponumerowana (#)"
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "Opis długości {length} przekracza limit {limit} char" msgstr "Opis długości {length} przekracza limit {limit} char"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Nie dodawaj „wyłącz:” do wygenerowanych wpisów kompilacji" msgstr "Nie dodawaj „wyłącz:” do wygenerowanych wpisów kompilacji"
@ -654,11 +624,6 @@ msgstr "Zduplikowany wpis „%s” w konfiguracji serwerów lustrzanych!"
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Zduplikowany link w '{field}': {url}" msgstr "Zduplikowany link w '{field}': {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "BŁĄD: podkomenda „serwer” została usunięta, użyj polecenia „deploy”!" msgstr "BŁĄD: podkomenda „serwer” została usunięta, użyj polecenia „deploy”!"
@ -829,11 +794,6 @@ msgstr "Znaleziono nieprawidłowe kody wersji dla niektórych aplikacji"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Znaleziono wiele plików bloków podpisów JAR w {path}" msgstr "Znaleziono wiele plików bloków podpisów JAR w {path}"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Znaleziono wiele certyfikatów do podpisywania dla repozytorium."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -898,11 +858,6 @@ msgstr "Błąd zdalnego ustawiania Git: \"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Resetowanie Git nie powiodło się" msgstr "Resetowanie Git nie powiodło się"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Aktualizacja submodułu Git nie powiodła się"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Nie udało się zsynchronizować modułu submodule Git" msgstr "Nie udało się zsynchronizować modułu submodule Git"
@ -1108,10 +1063,6 @@ msgstr "Utrzymywanie nieudanej kompilacji „{apkfilename}”"
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Magazyn kluczy do podpisywania klucza:\t" msgstr "Magazyn kluczy do podpisywania klucza:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1249,11 +1200,6 @@ msgstr "Nie znaleziono tagów"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Brak katalogu bez podpisu - nic nie można zrobić" msgstr "Brak katalogu bez podpisu - nic nie można zrobić"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "nie znaleziono informacji o wersji"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Nieprawidłowa definicja rozmiaru: \"{}\"" msgstr "Nieprawidłowa definicja rozmiaru: \"{}\""
@ -1412,11 +1358,6 @@ msgstr "Przepchnij dziennik do tego zdalnego repozytorium git"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Przesyłanie dziennika przejrzystości plików binarnych do {url}" msgstr "Przesyłanie dziennika przejrzystości plików binarnych do {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Błąd zdalnego ustawiania Git: \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1450,11 +1391,6 @@ msgstr "Nie udało się odczytać packageName/versionCode/versionName, nieprawid
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Czytanie {apkfilename} z pamięci podręcznej" msgstr "Czytanie {apkfilename} z pamięci podręcznej"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "pobierz najnowszą wersję sygnatur z sieci"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Usuwanie określonych plików" msgstr "Usuwanie określonych plików"
@ -1705,13 +1641,6 @@ msgstr "Istnieje kolizja keyalias - wstrzymano publikowanie"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "To są aplikacje, które zostały zarchiwizowane w głównym repozytorium." msgstr "To są aplikacje, które zostały zarchiwizowane w głównym repozytorium."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"BŁĄD: tego polecenia nigdy nie należy używać do zwierciadlania f-droid.org!\n"
"Pełne lustro f-droid.org wymaga ponad 200 GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "To jest repozytorium aplikacji używanych z F-Droid. Aplikacje w tym repozytorium są albo oficjalnymi plikami binarnymi utworzonymi przez oryginalnych programistów aplikacji, albo plikami binarnymi utworzonymi ze źródła przez administratora f-droid.org przy użyciu narzędzi na https://gitlab.com/fdroid." msgstr "To jest repozytorium aplikacji używanych z F-Droid. Aplikacje w tym repozytorium są albo oficjalnymi plikami binarnymi utworzonymi przez oryginalnych programistów aplikacji, albo plikami binarnymi utworzonymi ze źródła przez administratora f-droid.org przy użyciu narzędzi na https://gitlab.com/fdroid."
@ -1880,13 +1809,8 @@ msgstr "UpdateCheckData musi używać adresu URL HTTPS: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData nie jest prawidłowym adresem URL: {url}" msgstr "UpdateCheckData nie jest prawidłowym adresem URL: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode jest ustawiony, ale wygląda na to, że checkupdates nie został jeszcze uruchomiony"
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode jest ustawiony, ale wygląda na to, że checkupdates nie został jeszcze uruchomiony" msgstr "UpdateCheckMode jest ustawiony, ale wygląda na to, że checkupdates nie został jeszcze uruchomiony"
@ -1917,11 +1841,6 @@ msgstr "Zastosowanie"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Użycie: %s\n" msgstr "Użycie: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Użyj /HEAD zamiast/ master, aby wskazać plik w domyślnej gałęzi"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Użyj /HEAD zamiast/ master, aby wskazać plik w domyślnej gałęzi" msgstr "Użyj /HEAD zamiast/ master, aby wskazać plik w domyślnej gałęzi"
@ -1951,11 +1870,6 @@ msgstr "Używając APK Signature v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Używając APK Signature v3" msgstr "Używając APK Signature v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Używając APK Signature v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Korzystanie z jarsignera Java nie jest zalecane do weryfikacji plików APK! Użyj apksigner" msgstr "Korzystanie z jarsignera Java nie jest zalecane do weryfikacji plików APK! Użyj apksigner"
@ -2013,10 +1927,6 @@ msgstr "Po skonfigurowaniu dla indeksów podpisanych utwórz na tym etapie tylko
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Podczas linkowania całego repozytorium yamllint jest domyślnie wyłączony. Ta opcja wymusza yamllint niezależnie od tego." msgstr "Podczas linkowania całego repozytorium yamllint jest domyślnie wyłączony. Ta opcja wymusza yamllint niezależnie od tego."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'Distinguished Name' używana podczas generowania kluczy" msgstr "X.509 'Distinguished Name' używana podczas generowania kluczy"
@ -2167,11 +2077,6 @@ msgstr "kolidujący subparser: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "nie można przeanalizować '{path}'" msgstr "nie można przeanalizować '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "could not parse srclib spec (no ref specified):' {}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "could not parse srclib spec (no ref specified):' {}'" msgstr "could not parse srclib spec (no ref specified):' {}'"
@ -2347,11 +2252,6 @@ msgstr "local_copy_dir musi być katalogiem, a nie plikiem!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "mirror '%s'nie kończy się na 'fdroid'!" msgstr "mirror '%s'nie kończy się na 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Teraz ustaw je w config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2509,11 +2409,6 @@ msgstr "repo_icon \"repo / icons / %s\" nie istnieje, generuje symbol zastępczy
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url musi kończyć się na /repo" msgstr "repo_url musi kończyć się na /repo"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "nie zainstalowano ruamel.yaml, nie można zapisać metadanych." msgstr "nie zainstalowano ruamel.yaml, nie można zapisać metadanych."
@ -2528,11 +2423,6 @@ msgstr "s3cmd zsynchronizuj indeksy {path} do {url} i usuń"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "pamięć podręczna skanera jest zniszczona! Możesz to wyczyścić poleceniem: „{clear}”" msgstr "pamięć podręczna skanera jest zniszczona! Możesz to wyczyścić poleceniem: „{clear}”"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir nie kończy się na \"fdroid\", może masz na myśli: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "biblioteka współdzielona" msgstr "biblioteka współdzielona"
@ -2738,31 +2628,6 @@ msgstr "{path} nie istnieje! Utwórz go, uruchamiając:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} ma zły podpis pliku \"{pattern}\", możliwe wykorzystanie Janusa!" msgstr "{path} ma zły podpis pliku \"{pattern}\", możliwe wykorzystanie Janusa!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' nie jest ustawiony w config.yml!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2773,11 +2638,6 @@ msgstr "{path} ma zerowy rozmiar!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} więcej niż 200MB, przesłane ręcznie: {url}" msgstr "{path} więcej niż 200MB, przesłane ręcznie: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.1-680-ge1d3de71\n" "Project-Id-Version: fdroidserver 1.1-680-ge1d3de71\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2023-07-02 15:51+0000\n" "PO-Revision-Date: 2023-07-02 15:51+0000\n"
"Last-Translator: ssantos <ssantos@web.de>\n" "Last-Translator: ssantos <ssantos@web.de>\n"
"Language-Team: Portuguese <https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/>\n" "Language-Team: Portuguese <https://hosted.weblate.org/projects/f-droid/fdroidserver/pt/>\n"
@ -97,11 +97,6 @@ msgstr[1] "A opção %(option)s requer os argumentos %(number)d"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: erro: %(message)s\n" msgstr "%(prog)s: erro: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -221,11 +216,6 @@ msgstr "está faltando o /issues"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "Uma URL é necessária como um argumento!" msgstr "Uma URL é necessária como um argumento!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Nenhum certificado de assinatura encontrado em {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Adicione assinaturas PGP usando GnuPG para os pacotes no repositório" msgstr "Adicione assinaturas PGP usando GnuPG para os pacotes no repositório"
@ -303,11 +293,6 @@ msgstr "A app tem binários, mas não tem AllowedAPKSigningKeys correspondentes
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "A app tem NoSourceSince ou ArchivePolicy \"0 versões\", mas AutoUpdateMode ou UpdateCheckMode não são Nenhum" msgstr "A app tem NoSourceSince ou ArchivePolicy \"0 versões\", mas AutoUpdateMode ou UpdateCheckMode não são Nenhum"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "A app tem NoSourceSince ou ArchivePolicy \"0 versões\", mas AutoUpdateMode ou UpdateCheckMode não são Nenhum"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -404,11 +389,6 @@ msgstr "As categorias '%s' não são válidas"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "As categorias não são definidas" msgstr "As categorias não são definidas"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Verificação de actualizações das aplicações" msgstr "Verificação de actualizações das aplicações"
@ -575,16 +555,6 @@ msgstr "A descrição tem a lista (%s), mas não tem marcadores (*), nem é nume
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "A descrição de comprimento {length} é sobre o limite de char {limit}" msgstr "A descrição de comprimento {length} é sobre o limite de char {limit}"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Não adicionar 'disable:' às entradas de compilação geradas" msgstr "Não adicionar 'disable:' às entradas de compilação geradas"
@ -651,11 +621,6 @@ msgstr "Entrada \"%s\" duplicada na configuração de espelhos!"
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Ligação duplicada em '{field}': {url}" msgstr "Ligação duplicada em '{field}': {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "ERRO: o subcomando \"server\" foi removido, use \"deploy\"!" msgstr "ERRO: o subcomando \"server\" foi removido, use \"deploy\"!"
@ -826,11 +791,6 @@ msgstr "versionCodes inválidos encontrados para algumas apps"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Vários ficheiros de blocos de assinaturas JAR foram encontrados em {path}" msgstr "Vários ficheiros de blocos de assinaturas JAR foram encontrados em {path}"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Vários certificados de assinatura encontrados para o repositório."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -895,11 +855,6 @@ msgstr "Git remote set-head falhou: \"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Git reset falhou" msgstr "Git reset falhou"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Git submodule update falhou"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Git submodule sync falhou" msgstr "Git submodule sync falhou"
@ -1105,10 +1060,6 @@ msgstr "Mantendo a compilação com falha \"{apkfilename}\""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Armazenamento de chaves de assinatura:\t" msgstr "Armazenamento de chaves de assinatura:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1246,11 +1197,6 @@ msgstr "Nenhuma etiqueta encontrada"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Nenhum diretório não assinado - nada a fazer" msgstr "Nenhum diretório não assinado - nada a fazer"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "nenhuma informação de versão encontrada"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Não é uma definição de tamanho válida: \"{}\"" msgstr "Não é uma definição de tamanho válida: \"{}\""
@ -1409,11 +1355,6 @@ msgstr "Submeter o registo de eventos para este repositório git remoto"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "A submeter o registo de transparência de binário para {url}" msgstr "A submeter o registo de transparência de binário para {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Git remote set-head falhou: \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1447,11 +1388,6 @@ msgstr "Falha ao ler packageName/versionCode/versionName, APK inválido: '{apkfi
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Lendo {apkfilename} do cache" msgstr "Lendo {apkfilename} do cache"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "buscar a versão de assinaturas mais recente da Web"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Apagando ficheiros especificados" msgstr "Apagando ficheiros especificados"
@ -1701,13 +1637,6 @@ msgstr "Há uma colisão do keyalias - publicação parada"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Estas são as aplicações que foram arquivadas do repositório principal." msgstr "Estas são as aplicações que foram arquivadas do repositório principal."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"ERRO: este comando nunca deve ser usado para espelhar f-Droid.org!\n"
"Um espelho completo de f-Droid.org requer mais de 200GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Este é um repositório de apps a serem usados com o F-Droid. Aplicações neste repositório são binários oficiais compilados pelos programadores da aplicação original ou são binários compilados da fonte por f-droid.org a usar as ferramentas em https://gitlab.com/fdroid." msgstr "Este é um repositório de apps a serem usados com o F-Droid. Aplicações neste repositório são binários oficiais compilados pelos programadores da aplicação original ou são binários compilados da fonte por f-droid.org a usar as ferramentas em https://gitlab.com/fdroid."
@ -1876,13 +1805,8 @@ msgstr "UpdateCheckData deve usar um URL HTTPS: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData não é uma URL válida: {url}" msgstr "UpdateCheckData não é uma URL válida: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode é definido, mas parece que likecheckupdates ainda não foi executado"
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode é definido, mas parece que likecheckupdates ainda não foi executado" msgstr "UpdateCheckMode é definido, mas parece que likecheckupdates ainda não foi executado"
@ -1913,11 +1837,6 @@ msgstr "Utilização"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Utilização: %s\n" msgstr "Utilização: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Use /HEAD em vez de /master para apontar num ficheiro na ramificação predefinida"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Use /HEAD em vez de /master para apontar num ficheiro na ramificação predefinida" msgstr "Use /HEAD em vez de /master para apontar num ficheiro na ramificação predefinida"
@ -1947,11 +1866,6 @@ msgstr "A usar a assinatura APK v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "A usar a assinatura APK v3" msgstr "A usar a assinatura APK v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "A usar a assinatura APK v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Usando o jarsigner de Java, não recomendado para verificar APKs! Use apksigner" msgstr "Usando o jarsigner de Java, não recomendado para verificar APKs! Use apksigner"
@ -2009,10 +1923,6 @@ msgstr "Quando configurado para índices assinados, crie apenas índices não as
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Ao cotar todo o repositório o yamllint é desativado por predefinição. Esta opção força o yamllint independentemente." msgstr "Ao cotar todo o repositório o yamllint é desativado por predefinição. Esta opção força o yamllint independentemente."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'Distiguished Name' usado na geração de chaves" msgstr "X.509 'Distiguished Name' usado na geração de chaves"
@ -2162,11 +2072,6 @@ msgstr "subanalisador conflitante: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "não foi possível analisar '{path}'" msgstr "não foi possível analisar '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "não foi possível analisar a especificação srclib (referência não especificada): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "não foi possível analisar a especificação srclib (referência não especificada): '{}'" msgstr "não foi possível analisar a especificação srclib (referência não especificada): '{}'"
@ -2341,11 +2246,6 @@ msgstr "local_copy_dir deve ser directory, não um ficheiro!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "espelho '%s' não termina com 'fdroid'!" msgstr "espelho '%s' não termina com 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Agora configure estes em config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2503,11 +2403,6 @@ msgstr "repo_icon \"repo/icons/%s\" não existe, a gerar um espaço reservado."
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url precisa de terminar com /repo" msgstr "repo_url precisa de terminar com /repo"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "o ruamel.yaml não está instalado, não é possível escrever metadados." msgstr "o ruamel.yaml não está instalado, não é possível escrever metadados."
@ -2522,11 +2417,6 @@ msgstr "s3cmd sincroniza índices {path} para {url} e apaga"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "o cache do scanner está malformado! Pode limpá-lo com: '{clear}'" msgstr "o cache do scanner está malformado! Pode limpá-lo com: '{clear}'"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir não termina com \"fdroid\", talvez quis: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "biblioteca compartilhada" msgstr "biblioteca compartilhada"
@ -2731,31 +2621,6 @@ msgstr "{path} não existe! Crie-o executando:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} tem uma má assinatura de ficheiro \"{pattern}\", um exploração Janus é possível!" msgstr "{path} tem uma má assinatura de ficheiro \"{pattern}\", um exploração Janus é possível!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' não definido em 'config.yml'!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2766,11 +2631,6 @@ msgstr "{path} tem um tamanho de zero!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} mais de 200MB, enviar manualmente: {url}" msgstr "{path} mais de 200MB, enviar manualmente: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -13,7 +13,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2023-08-18 15:51+0000\n" "PO-Revision-Date: 2023-08-18 15:51+0000\n"
"Last-Translator: The Cats <philosoph@danwin1210.de>\n" "Last-Translator: The Cats <philosoph@danwin1210.de>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/>\n" "Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_BR/>\n"
@ -102,11 +102,6 @@ msgstr[1] "opção %(option)s necessita %(number)d argumentos"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: erro: %(message)s\n" msgstr "%(prog)s: erro: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -226,11 +221,6 @@ msgstr "está faltando o /issues"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "Uma URL é necessária como um argumento!" msgstr "Uma URL é necessária como um argumento!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Nenhum certificado de assinatura encontrado em {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Adicione assinaturas PGP usando GnuPG para os pacotes no repositório" msgstr "Adicione assinaturas PGP usando GnuPG para os pacotes no repositório"
@ -308,11 +298,6 @@ msgstr "O aplicativo tem binários, mas não tem AllowedAPKSigningKeys correspon
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "O aplicativo tem NoSourceSince ou ArchivePolicy \"0 versões\", mas AutoUpdateMode ou UpdateCheckMode não são None" msgstr "O aplicativo tem NoSourceSince ou ArchivePolicy \"0 versões\", mas AutoUpdateMode ou UpdateCheckMode não são None"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "O aplicativo tem NoSourceSince ou ArchivePolicy \"0 versões\", mas AutoUpdateMode ou UpdateCheckMode não são None"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -409,11 +394,6 @@ msgstr "Categorias '%s' não são válidas"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "As categorias não estão definidas" msgstr "As categorias não estão definidas"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Verifica se existem atualizações para os aplicativos" msgstr "Verifica se existem atualizações para os aplicativos"
@ -580,16 +560,6 @@ msgstr "Descrição tem uma lista (%s), mas não é com marcadores (*) nem numer
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "A descrição de tamanho {length} está acima do limite de {limit} caracteres" msgstr "A descrição de tamanho {length} está acima do limite de {limit} caracteres"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Não adicione \"disable:\" para as entradas de compilação geradas" msgstr "Não adicione \"disable:\" para as entradas de compilação geradas"
@ -656,11 +626,6 @@ msgstr "Entrada \"%s\" duplicada na configuração de espelhos!"
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Link duplicado em '{field}': {url}" msgstr "Link duplicado em '{field}': {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "ERRO: o subcomando \"server\" foi removido, use \"deploy\"!" msgstr "ERRO: o subcomando \"server\" foi removido, use \"deploy\"!"
@ -831,11 +796,6 @@ msgstr "Encontrado versões de códigos inválidas para alguns aplicativos"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Encontrados vários arquivos de bloqueio de assinatura JAR em {path}" msgstr "Encontrados vários arquivos de bloqueio de assinatura JAR em {path}"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Encontrado vários certificados de assinatura para o repositório."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -900,11 +860,6 @@ msgstr "Git remote set-head falhou: \"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Falha no 'reset' do Git" msgstr "Falha no 'reset' do Git"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Falha na atualização do submódulo Git"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Falha na sincronização do submódulo Git" msgstr "Falha na sincronização do submódulo Git"
@ -1110,10 +1065,6 @@ msgstr "Mantendo a compilação com falha \"{apkfilename}\""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Armazenamento de chaves de assinatura:\t" msgstr "Armazenamento de chaves de assinatura:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1251,11 +1202,6 @@ msgstr "Nenhuma etiqueta encontrada"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Nenhum diretório não assinado - nada a fazer" msgstr "Nenhum diretório não assinado - nada a fazer"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "nenhuma informação de versão encontrada"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Não é uma definição de tamanho válida: \"{}\"" msgstr "Não é uma definição de tamanho válida: \"{}\""
@ -1414,11 +1360,6 @@ msgstr "Mandar o registro de mudanças para este repositório git remoto"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Atualizar o log de transparência de um binário para {url}" msgstr "Atualizar o log de transparência de um binário para {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Git remote set-head falhou: \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1452,11 +1393,6 @@ msgstr "Falha ao ler packageName/versionCode/versionName, APK inválido: '{apkfi
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Lendo {apkfilename} do cache" msgstr "Lendo {apkfilename} do cache"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "obter a versão de assinaturas mais recente da Web"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Removendo arquivos especificados" msgstr "Removendo arquivos especificados"
@ -1706,13 +1642,6 @@ msgstr "Há uma colisão do keyalias - publicação parada"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Estas são as aplicações que foram arquivadas a partir do repositório principal." msgstr "Estas são as aplicações que foram arquivadas a partir do repositório principal."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"ERRO: este comando nunca deve ser usado para espelhar o f-droid.org!\n"
"Um espelho completo de f-droid.org requer mais de 200 GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Este é um repositório de aplicativos a serem usados com o F-Droid. Os aplicativos neste repositório são binários oficiais compilados pelos desenvolvedores do aplicativo original ou são binários compilados a partir da fonte por f-droid.org usando as ferramentas em https://gitlab.com/fdroid." msgstr "Este é um repositório de aplicativos a serem usados com o F-Droid. Os aplicativos neste repositório são binários oficiais compilados pelos desenvolvedores do aplicativo original ou são binários compilados a partir da fonte por f-droid.org usando as ferramentas em https://gitlab.com/fdroid."
@ -1881,13 +1810,8 @@ msgstr "UpdateCheckData deve usar um URL HTTPS: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData não é uma URL válida: {url}" msgstr "UpdateCheckData não é uma URL válida: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode é definido, mas parece que likecheckupdates ainda não foi executado"
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode é definido, mas parece que likecheckupdates ainda não foi executado" msgstr "UpdateCheckMode é definido, mas parece que likecheckupdates ainda não foi executado"
@ -1918,11 +1842,6 @@ msgstr "Uso"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Uso: %s\n" msgstr "Uso: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Use /HEAD em vez de /master para apontar em um arquivo na ramificação predefinida"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Use /HEAD em vez de /master para apontar em um arquivo na ramificação predefinida" msgstr "Use /HEAD em vez de /master para apontar em um arquivo na ramificação predefinida"
@ -1952,11 +1871,6 @@ msgstr "Usando a Assinatura APK v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Usando a Assinatura APK v3" msgstr "Usando a Assinatura APK v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Usando a Assinatura APK v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Usando o jarsigner de Java, não recomendado para verificar APKs! Use apksigner" msgstr "Usando o jarsigner de Java, não recomendado para verificar APKs! Use apksigner"
@ -2014,10 +1928,6 @@ msgstr "Quando configurado para índices assinados, crie apenas índices não as
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Ao cotar todo o repositório, o yamllint é desativado por padrão. Independente de qualquer coisa esta opção impõem o uso do yamllint." msgstr "Ao cotar todo o repositório, o yamllint é desativado por padrão. Independente de qualquer coisa esta opção impõem o uso do yamllint."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'Distiguished Name' usado na geração de chaves" msgstr "X.509 'Distiguished Name' usado na geração de chaves"
@ -2167,11 +2077,6 @@ msgstr "subanalizador conflitante: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "não foi possível analisar '{path}'" msgstr "não foi possível analisar '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "não foi possível analisar a especificação srclib (referência sem especificação): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "não foi possível analisar a especificação srclib (referência sem especificação): '{}'" msgstr "não foi possível analisar a especificação srclib (referência sem especificação): '{}'"
@ -2346,11 +2251,6 @@ msgstr "local_copy_dir deve ser um diretório, não um arquivo!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "espelho '%s' não termina com 'fdroid'!" msgstr "espelho '%s' não termina com 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Agora defina estes em config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2508,11 +2408,6 @@ msgstr "repo_icon \"repo/icons/%s\" não existe, gerando um espaço reservado."
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url precisa terminar com /repo" msgstr "repo_url precisa terminar com /repo"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "o ruamel.yaml não está instalado, não é possível escrever os metadados." msgstr "o ruamel.yaml não está instalado, não é possível escrever os metadados."
@ -2527,11 +2422,6 @@ msgstr "s3cmd sincroniza índices {path} para {url} e exclui"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "o cache do scanner está malformado! Você pode limpá-lo com: '{clear}'" msgstr "o cache do scanner está malformado! Você pode limpá-lo com: '{clear}'"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir não termina com \"fdroid\", talvez você quis: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "biblioteca compartilhada" msgstr "biblioteca compartilhada"
@ -2736,31 +2626,6 @@ msgstr "{path} não existe! Crie-o executando:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} tem uma má assinatura de arquivo \"{pattern}\", um exploração Janus é possível!" msgstr "{path} tem uma má assinatura de arquivo \"{pattern}\", um exploração Janus é possível!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "\"sdk_path\" não definido em config.yml!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2771,11 +2636,6 @@ msgstr "{path} tem um tamanho de zero!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "o {path} tem mais de 200MB, upload manual: {url}" msgstr "o {path} tem mais de 200MB, upload manual: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2023-07-02 15:51+0000\n" "PO-Revision-Date: 2023-07-02 15:51+0000\n"
"Last-Translator: ssantos <ssantos@web.de>\n" "Last-Translator: ssantos <ssantos@web.de>\n"
"Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/>\n" "Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/f-droid/fdroidserver/pt_PT/>\n"
@ -98,11 +98,6 @@ msgstr[1] "A opção %(option)s requer os argumentos %(number)d"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: erro: %(message)s\n" msgstr "%(prog)s: erro: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -222,11 +217,6 @@ msgstr "está faltando o /issues"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "Uma URL é necessária como um argumento!" msgstr "Uma URL é necessária como um argumento!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Nenhum certificado de assinatura encontrado em {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Adicione assinaturas PGP usando GnuPG para os pacotes no repositório" msgstr "Adicione assinaturas PGP usando GnuPG para os pacotes no repositório"
@ -304,11 +294,6 @@ msgstr "A app tem binários, mas não tem AllowedAPKSigningKeys correspondentes
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "A app tem NoSourceSince ou ArchivePolicy \"0 versões\", mas AutoUpdateMode ou UpdateCheckMode não são Nenhum" msgstr "A app tem NoSourceSince ou ArchivePolicy \"0 versões\", mas AutoUpdateMode ou UpdateCheckMode não são Nenhum"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "A app tem NoSourceSince ou ArchivePolicy \"0 versões\", mas AutoUpdateMode ou UpdateCheckMode não são Nenhum"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -405,11 +390,6 @@ msgstr "As categorias '%s' não são válidas"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "As categorias não são definidas" msgstr "As categorias não são definidas"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Verificação de actualizações das aplicações" msgstr "Verificação de actualizações das aplicações"
@ -576,16 +556,6 @@ msgstr "A descrição tem a lista (%s), mas não tem marcadores (*), nem é nume
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "A descrição de comprimento {length} é sobre o limite de char {limit}" msgstr "A descrição de comprimento {length} é sobre o limite de char {limit}"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Não adicionar 'disable:' às entradas de compilação geradas" msgstr "Não adicionar 'disable:' às entradas de compilação geradas"
@ -652,11 +622,6 @@ msgstr "Entrada \"%s\" duplicada na configuração de espelhos!"
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Ligação duplicada em '{field}': {url}" msgstr "Ligação duplicada em '{field}': {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "ERRO: o subcomando \"server\" foi removido, use \"deploy\"!" msgstr "ERRO: o subcomando \"server\" foi removido, use \"deploy\"!"
@ -827,11 +792,6 @@ msgstr "versionCodes inválidos encontrados para algumas apps"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Vários ficheiros de blocos de assinaturas JAR foram encontrados em {path}" msgstr "Vários ficheiros de blocos de assinaturas JAR foram encontrados em {path}"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Vários certificados de assinatura encontrados para o repositório."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -896,11 +856,6 @@ msgstr "Git remote set-head falhou: \"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Git reset falhou" msgstr "Git reset falhou"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Git submodule update falhou"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Git submodule sync falhou" msgstr "Git submodule sync falhou"
@ -1106,10 +1061,6 @@ msgstr "Mantendo a compilação com falha \"{apkfilename}\""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Armazenamento de chaves de assinatura:\t" msgstr "Armazenamento de chaves de assinatura:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1247,11 +1198,6 @@ msgstr "Nenhuma etiqueta encontrada"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Nenhum diretório não assinado - nada a fazer" msgstr "Nenhum diretório não assinado - nada a fazer"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "não há informações de versão encontrada"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Não é uma definição de tamanho válida: \"{}\"" msgstr "Não é uma definição de tamanho válida: \"{}\""
@ -1410,11 +1356,6 @@ msgstr "Submeter o registo de eventos para este repositório git remoto"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "A submeter o registo de transparência de binário para {url}" msgstr "A submeter o registo de transparência de binário para {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Git remote set-head falhou: \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1448,11 +1389,6 @@ msgstr "Falha ao ler packageName/versionCode/versionName, APK inválido: '{apkfi
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Lendo {apkfilename} do cache" msgstr "Lendo {apkfilename} do cache"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "buscar a versão de assinaturas mais recente da Web"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Apagando ficheiros especificados" msgstr "Apagando ficheiros especificados"
@ -1702,13 +1638,6 @@ msgstr "Há uma colisão do keyalias - publicação parada"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Estas são as aplicações que foram arquivadas do repositório principal." msgstr "Estas são as aplicações que foram arquivadas do repositório principal."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"ERRO: este comando nunca deve ser usado para espelhar f-Droid.org!\n"
"Um espelho completo de f-Droid.org requer mais de 200GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Este é um repositório de apps a serem usados com o F-Droid. Aplicações neste repositório são binários oficiais compilados pelos programadores da aplicação original ou são binários compilados da fonte por f-droid.org a usar as ferramentas em https://gitlab.com/fdroid." msgstr "Este é um repositório de apps a serem usados com o F-Droid. Aplicações neste repositório são binários oficiais compilados pelos programadores da aplicação original ou são binários compilados da fonte por f-droid.org a usar as ferramentas em https://gitlab.com/fdroid."
@ -1877,13 +1806,8 @@ msgstr "UpdateCheckData deve usar um URL HTTPS: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData não é uma URL válida: {url}" msgstr "UpdateCheckData não é uma URL válida: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode é definido, mas parece que likecheckupdates ainda não foi executado"
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode é definido, mas parece que likecheckupdates ainda não foi executado" msgstr "UpdateCheckMode é definido, mas parece que likecheckupdates ainda não foi executado"
@ -1914,11 +1838,6 @@ msgstr "Utilização"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Utilização: %s\n" msgstr "Utilização: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Use /HEAD em vez de /master para apontar num ficheiro na ramificação predefinida"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Use /HEAD em vez de /master para apontar num ficheiro na ramificação predefinida" msgstr "Use /HEAD em vez de /master para apontar num ficheiro na ramificação predefinida"
@ -1948,11 +1867,6 @@ msgstr "A usar a assinatura APK v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "A usar a assinatura APK v3" msgstr "A usar a assinatura APK v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "A usar a assinatura APK v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Usando o jarsigner de Java, não recomendado para verificar APKs! Use apksigner" msgstr "Usando o jarsigner de Java, não recomendado para verificar APKs! Use apksigner"
@ -2010,10 +1924,6 @@ msgstr "Quando configurado para índices assinados, crie apenas índices não as
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Ao cotar todo o repositório o yamllint é desativado por predefinição. Esta opção força o yamllint independentemente." msgstr "Ao cotar todo o repositório o yamllint é desativado por predefinição. Esta opção força o yamllint independentemente."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'Distiguished Name' usado na geração de chaves" msgstr "X.509 'Distiguished Name' usado na geração de chaves"
@ -2163,11 +2073,6 @@ msgstr "subanalisador conflitante: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "não foi possível analisar '{path}'" msgstr "não foi possível analisar '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "não foi possível analisar a especificação srclib (referência não especificada): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "não foi possível analisar a especificação srclib (referência não especificada): '{}'" msgstr "não foi possível analisar a especificação srclib (referência não especificada): '{}'"
@ -2342,11 +2247,6 @@ msgstr "local_copy_dir deve ser directory, não um ficheiro!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "espelho '%s' não termina com 'fdroid'!" msgstr "espelho '%s' não termina com 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Agora configure estes em config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2504,11 +2404,6 @@ msgstr "repo_icon \"repo/icons/%s\" não existe, a gerar um espaço reservado."
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url precisa de terminar com /repo" msgstr "repo_url precisa de terminar com /repo"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "o ruamel.yaml não está instalado, não é possível escrever metadados." msgstr "o ruamel.yaml não está instalado, não é possível escrever metadados."
@ -2523,11 +2418,6 @@ msgstr "s3cmd sincroniza índices {path} para {url} e exclui"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "o cache do scanner está malformado! Pode limpá-lo com: '{clear}'" msgstr "o cache do scanner está malformado! Pode limpá-lo com: '{clear}'"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir não termina com \"fdroid\", talvez quis: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "biblioteca compartilhada" msgstr "biblioteca compartilhada"
@ -2732,31 +2622,6 @@ msgstr "{path} não existe! Crie-o executando:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} tem uma má assinatura de ficheiro \"{pattern}\", um exploração Janus é possível!" msgstr "{path} tem uma má assinatura de ficheiro \"{pattern}\", um exploração Janus é possível!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' não definido em 'config.yml'!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2767,11 +2632,6 @@ msgstr "{path} tem um tamanho de zero!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} mais de 200MB, enviar manualmente: {url}" msgstr "{path} mais de 200MB, enviar manualmente: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -2,23 +2,22 @@
# This file is put in the public domain. # This file is put in the public domain.
# Daniel Șerbănescu <daniel@serbanescu.dk>, 2021. # Daniel Șerbănescu <daniel@serbanescu.dk>, 2021.
# Christian Eichert <c@zp1.net>, 2021. # Christian Eichert <c@zp1.net>, 2021.
# Simona Iacob <s@zp1.net>, 2021, 2022, 2023, 2024. # Simona Iacob <s@zp1.net>, 2021, 2022, 2023.
# Licaon Kter <licaon.kter@protonmail.com>, 2021, 2022, 2023. # Licaon Kter <licaon.kter@protonmail.com>, 2021, 2022.
# Hans-Christoph Steiner <hans@guardianproject.info>, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 2.0a5-27-gf24eae0f\n" "Project-Id-Version: fdroidserver 2.0a5-27-gf24eae0f\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-10 13:33+0000\n" "PO-Revision-Date: 2023-08-10 18:46+0000\n"
"Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n" "Last-Translator: Simona Iacob <s@zp1.net>\n"
"Language-Team: Romanian <https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/>\n" "Language-Team: Romanian <https://hosted.weblate.org/projects/f-droid/fdroidserver/ro/>\n"
"Language: ro\n" "Language: ro\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 5.0-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -75,7 +74,7 @@ msgstr "\"{path}\" nu este un format de fișier acceptat (utilizați: metadata/*
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "\"{path}\" is signed by a key that is not allowed:" msgid "\"{path}\" is signed by a key that is not allowed:"
msgstr "\"{path}\" este semnat de o cheie care nu este permisă:" msgstr "\"{path}\" \"{path}\" este semnat de o cheie care nu este permisă:"
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
#, python-brace-format #, python-brace-format
@ -99,11 +98,6 @@ msgstr[2] "Opțiunea %(option)s necesită %(number)d argumente"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: eroare: %(message)s\n" msgstr "%(prog)s: eroare: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -223,11 +217,6 @@ msgstr "/problemele lipsesc"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "Un URL este necesar ca argument!" msgstr "Un URL este necesar ca argument!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Nu s-au găsit certificate de semnare în {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Adăugați semnături PGP folosind GnuPG pentru pachetele din depozit" msgstr "Adăugați semnături PGP folosind GnuPG pentru pachetele din depozit"
@ -305,11 +294,6 @@ msgstr "Aplicația are binare, dar nu are AllowedAPKSigningKeys corespunzătoare
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "App are NoSourceSince sau ArchivePolicy \"0 versions\" dar AutoUpdateMode sau UpdateCheckMode nu sunt None" msgstr "App are NoSourceSince sau ArchivePolicy \"0 versions\" dar AutoUpdateMode sau UpdateCheckMode nu sunt None"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "App are NoSourceSince sau ArchivePolicy \"0 versions\" dar AutoUpdateMode sau UpdateCheckMode nu sunt None"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -330,12 +314,12 @@ msgstr "Arhivare {apkfilename} cu semnătură invalidă!"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "AutoUpdateMode with UpdateCheckMode: HTTP must have a pattern." msgid "AutoUpdateMode with UpdateCheckMode: HTTP must have a pattern."
msgstr "AutoUpdateMode cu UpdateCheckMode: HTTP trebuie să aivă un format." msgstr ""
#: ../fdroidserver/index.py #: ../fdroidserver/index.py
#, python-brace-format #, python-brace-format
msgid "Bad entry type \"{mirrortype}\" in mirrors config: {mirror}" msgid "Bad entry type \"{mirrortype}\" in mirrors config: {mirror}"
msgstr "Intrare de tip \"{mirrortype}\" greșită în configurația oglinzilor: {mirror}" msgstr ""
#: ../fdroidserver/mirror.py #: ../fdroidserver/mirror.py
msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint=" msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint="
@ -407,11 +391,6 @@ msgstr "Categoriile \"%s\" nu sunt valabile"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "Categoriile nu sunt setate" msgstr "Categoriile nu sunt setate"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Verificați dacă există actualizări ale aplicațiilor" msgstr "Verificați dacă există actualizări ale aplicațiilor"
@ -441,7 +420,7 @@ msgstr "Efectuați modificări"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Conflicting \"{field}\" definitions between .yml and localized files:" msgid "Conflicting \"{field}\" definitions between .yml and localized files:"
msgstr "Definiții \"{field}\" contradictorii între fișierele .yml și cele localizate:" msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Conflicting arguments: '--verbose' and '--quiet' can not be specified at the same time." msgid "Conflicting arguments: '--verbose' and '--quiet' can not be specified at the same time."
@ -578,16 +557,6 @@ msgstr "Descrierea are o listă (%s), dar nu este punctată (*) și nici numerot
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "Descrierea lungimii {length} este peste limita {limit} limitei de caractere" msgstr "Descrierea lungimii {length} este peste limita {limit} limitei de caractere"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Nu adăugați \"disable:\" la intrările de construcție generate" msgstr "Nu adăugați \"disable:\" la intrările de construcție generate"
@ -642,23 +611,18 @@ msgstr "Descărcarea {url} a eșuat. {error}"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Duplicate Anti-Feature declaration at {path} was ignored!" msgid "Duplicate Anti-Feature declaration at {path} was ignored!"
msgstr "Declarația duplicată Anti-Feature la {path} a fost ignorată!" msgstr ""
#: ../fdroidserver/index.py #: ../fdroidserver/index.py
#, python-format #, python-format
msgid "Duplicate entry \"%s\" in mirrors config!" msgid "Duplicate entry \"%s\" in mirrors config!"
msgstr "Intrare duplicată \"%s\" în oglinzile config!" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Legătură duplicată în \"{field}\": {url}" msgstr "Legătură duplicată în \"{field}\": {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "ERROR: Subcomanda \"server\" a fost eliminată, utilizați \"deploy\"!" msgstr "ERROR: Subcomanda \"server\" a fost eliminată, utilizați \"deploy\"!"
@ -705,7 +669,7 @@ msgstr "Eroare la obținerea adresei repo"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "Exit with a non-zero code if problems were found" msgid "Exit with a non-zero code if problems were found"
msgstr "Ieșiți cu un cod diferit de zero dacă au fost găsite probleme" msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Extract application metadata from a source repository" msgid "Extract application metadata from a source repository"
@ -829,11 +793,6 @@ msgstr "Am găsit coduri de versiune invalide pentru unele aplicații"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Am găsit mai multe fișiere JAR Signature Block în {path}" msgstr "Am găsit mai multe fișiere JAR Signature Block în {path}"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "S-au găsit mai multe certificate de semnare pentru depozit."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -858,9 +817,9 @@ msgid "Found {apkfilename} at {url}"
msgstr "Am găsit {apkfilename} la {url}" msgstr "Am găsit {apkfilename} la {url}"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, fuzzy, python-brace-format
msgid "Found {count} problems in {filename}" msgid "Found {count} problems in {filename}"
msgstr "Am găsit {count} probleme în {filename}" msgstr "Scanerul a găsit {count} probleme în {appid}:"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, python-brace-format
@ -898,11 +857,6 @@ msgstr "Git remote set-head a eșuat: \"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Resetarea Git a eșuat" msgstr "Resetarea Git a eșuat"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Actualizarea submodulelor Git a eșuat"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Sincronizarea submodulelor Git a eșuat" msgstr "Sincronizarea submodulelor Git a eșuat"
@ -1108,10 +1062,6 @@ msgstr "Nu a reușit să construiască \"{apkfilename}\""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Keystore pentru cheia de semnare:\t" msgstr "Keystore pentru cheia de semnare:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1249,11 +1199,6 @@ msgstr "Nu s-au găsit etichete"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Niciun director nesemnat - nimic de făcut" msgstr "Niciun director nesemnat - nimic de făcut"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "nu s-au găsit informații despre versiune"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Nu este o definiție valabilă a dimensiunii: \"{}\"" msgstr "Nu este o definiție valabilă a dimensiunii: \"{}\""
@ -1412,11 +1357,6 @@ msgstr "Împingeți jurnalul în acest depozit de la distanță git"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Trimiterea jurnalului de transparență binară la {url}" msgstr "Trimiterea jurnalului de transparență binară la {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Git remote set-head a eșuat: \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1441,7 +1381,7 @@ msgid "Reading packageName/versionCode/versionName failed, APK invalid: '{apkfil
msgstr "Citirea packageName/versionCode/versionName a eșuat, APK invalid: '{apkfilename}'" msgstr "Citirea packageName/versionCode/versionName a eșuat, APK invalid: '{apkfilename}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, python-brace-format #, fuzzy, python-brace-format
msgid "Reading packageName/versionCode/versionName failed,APK invalid: '{apkfilename}'" msgid "Reading packageName/versionCode/versionName failed,APK invalid: '{apkfilename}'"
msgstr "Citirea packageName/versionCode/versionName a eșuat, APK invalid: '{apkfilename}'" msgstr "Citirea packageName/versionCode/versionName a eșuat, APK invalid: '{apkfilename}'"
@ -1450,11 +1390,6 @@ msgstr "Citirea packageName/versionCode/versionName a eșuat, APK invalid: '{apk
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Citirea {apkfilename} din memoria cache" msgstr "Citirea {apkfilename} din memoria cache"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "extrage cea mai recentă versiune de semnături de pe web"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Eliminarea fișierelor specificate" msgstr "Eliminarea fișierelor specificate"
@ -1518,7 +1453,7 @@ msgstr "Rularea wget în {path}"
#: ../fdroidserver/index.py #: ../fdroidserver/index.py
#, python-brace-format #, python-brace-format
msgid "SHA-256 of {url} does not match entry!" msgid "SHA-256 of {url} does not match entry!"
msgstr "SHA-256 din {url} nu se potrivește cu intrarea!" msgstr ""
#: ../fdroidserver/build.py #: ../fdroidserver/build.py
msgid "Scan the resulting APK(s) for known non-free classes." msgid "Scan the resulting APK(s) for known non-free classes."
@ -1529,9 +1464,9 @@ msgid "Scan the source code of a package"
msgstr "Scanarea codului sursă al unui pachet" msgstr "Scanarea codului sursă al unui pachet"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, fuzzy, python-brace-format
msgid "Scanner found {count} problems in {apk}" msgid "Scanner found {count} problems in {apk}"
msgstr "Scanerul a găsit {count} probleme în {apk}" msgstr "Scanerul a găsit {count} probleme în {appid}:"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, python-brace-format
@ -1705,13 +1640,6 @@ msgstr "Există o coliziune keyalias - publicarea a fost oprită"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Acestea sunt aplicațiile care au fost arhivate din depozitul principal." msgstr "Acestea sunt aplicațiile care au fost arhivate din depozitul principal."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"ERROR: această comandă nu ar trebui să fie folosită niciodată pentru a oglindi f-droid.org!\n"
"O oglindă completă a f-droid.org necesită mai mult de 200GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Acesta este un depozit de aplicații care pot fi utilizate cu F-Droid. Aplicațiile din acest depozit sunt fie binare oficiale construite de către dezvoltatorii aplicațiilor originale, fie binare construite din sursă de către administratorul f-droid.org folosind instrumentele de pe https://gitlab.com/fdroid." msgstr "Acesta este un depozit de aplicații care pot fi utilizate cu F-Droid. Aplicațiile din acest depozit sunt fie binare oficiale construite de către dezvoltatorii aplicațiilor originale, fie binare construite din sursă de către administratorul f-droid.org folosind instrumentele de pe https://gitlab.com/fdroid."
@ -1868,7 +1796,7 @@ msgstr "UpdateCheckData are un URL invalid: {url}"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "UpdateCheckData must match the version code as integer (\\d or [0-9]): {codeex}" msgid "UpdateCheckData must match the version code as integer (\\d or [0-9]): {codeex}"
msgstr "UpdateCheckData trebuie să corespundă codului versiunii ca număr întreg (\\d sau [0-9]): {codeex}" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
@ -1880,15 +1808,10 @@ msgstr "UpdateCheckData trebuie să utilizeze un URL HTTPS: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData nu este un URL valid: {url}" msgstr "UpdateCheckData nu este un URL valid: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode este setat, dar se pare că checkupdates nu a fost încă rulat."
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode este setat, dar se pare că checkupdates nu a fost încă rulat." msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckName is set to the known application ID, it can be removed" msgid "UpdateCheckName is set to the known application ID, it can be removed"
@ -1917,11 +1840,6 @@ msgstr "Utilizare"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Utilizare: %s\n" msgstr "Utilizare: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Folosiți /HEAD în loc de /master pentru a indica un fișier din ramura implicită"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Folosiți /HEAD în loc de /master pentru a indica un fișier din ramura implicită" msgstr "Folosiți /HEAD în loc de /master pentru a indica un fișier din ramura implicită"
@ -1951,11 +1869,6 @@ msgstr "Folosind APK Signature v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Folosind APK Signature v3" msgstr "Folosind APK Signature v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Folosind APK Signature v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Folosind jarsigner de la Java, nu este recomandat pentru verificarea APK-urilor! Utilizați apksigner" msgstr "Folosind jarsigner de la Java, nu este recomandat pentru verificarea APK-urilor! Utilizați apksigner"
@ -1968,7 +1881,7 @@ msgstr "Folosind androguard din \"{path}\""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Using blank dictionary instead of contents of {path}!" msgid "Using blank dictionary instead of contents of {path}!"
msgstr "Utilizarea dicționarului gol în loc de conținutul lui {path}!" msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
#, python-brace-format #, python-brace-format
@ -2013,10 +1926,6 @@ msgstr "Atunci când este configurat pentru indici cu semnătură, creați numai
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Atunci când se face linting pentru întregul depozit, yamllint este dezactivat în mod implicit. Această opțiune forțează yamllint indiferent de aceasta." msgstr "Atunci când se face linting pentru întregul depozit, yamllint este dezactivat în mod implicit. Această opțiune forțează yamllint indiferent de aceasta."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 \"Distinguished Name\" utilizat la generarea cheilor" msgstr "X.509 \"Distinguished Name\" utilizat la generarea cheilor"
@ -2086,7 +1995,7 @@ msgstr "argumentul \"-\" cu modul %r"
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
#, python-format #, python-format
msgid "argument %(argument_name)s: %(message)s" msgid "argument %(argument_name)s: %(message)s"
msgstr "argument %(argument_name)s: %(message)s" msgstr ""
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "attempting bare SSH connection to test deploy key:" msgid "attempting bare SSH connection to test deploy key:"
@ -2103,7 +2012,7 @@ msgstr "nu se poate deschide '%(filename)s': %(error)s"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "can't open non-https url: '{};" msgid "can't open non-https url: '{};"
msgstr "nu se poate deschide un URL non-https: '{};" msgstr ""
#: ../fdroidserver/build.py #: ../fdroidserver/build.py
#, python-brace-format #, python-brace-format
@ -2153,12 +2062,12 @@ msgstr[1] "șiruri de opțiuni conflictuale: %s"
msgstr[2] "șiruri de opțiuni conflictuale: %s" msgstr[2] "șiruri de opțiuni conflictuale: %s"
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
#, python-format #, fuzzy, python-format
msgid "conflicting subparser alias: %s" msgid "conflicting subparser alias: %s"
msgstr "șir de alias conflictual: %s" msgstr "șir de opțiuni conflictuale: %s"
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
#, python-format #, fuzzy, python-format
msgid "conflicting subparser: %s" msgid "conflicting subparser: %s"
msgstr "șir de opțiuni conflictuale: %s" msgstr "șir de opțiuni conflictuale: %s"
@ -2167,11 +2076,6 @@ msgstr "șir de opțiuni conflictuale: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "nu s-a putut analiza '{path}'" msgstr "nu s-a putut analiza '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "nu a putut analiza specificația srclib (nu a fost specificat niciun ref): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "nu a putut analiza specificația srclib (nu a fost specificat niciun ref): '{}'" msgstr "nu a putut analiza specificația srclib (nu a fost specificat niciun ref): '{}'"
@ -2208,12 +2112,14 @@ msgid "dest= is required for options like %r"
msgstr "dest= este necesar pentru opțiuni precum %r" msgstr "dest= este necesar pentru opțiuni precum %r"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, fuzzy
msgid "downloading '{}'" msgid "downloading '{}'"
msgstr "descărcare '{}'" msgstr "Descărcare %s"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, fuzzy
msgid "downloading scanner signatures from '{}' failed" msgid "downloading scanner signatures from '{}' failed"
msgstr "descărcarea semnăturilor de scaner de la '{}' a eșuat" msgstr "Eliminarea semnăturii misterioase din {apkfilename}"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "executable binary, possibly code" msgid "executable binary, possibly code"
@ -2253,7 +2159,7 @@ msgstr "fdroid [<comandă>] [-h|--help|--version|<args>]"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "fetch the latest version of signatures from the web" msgid "fetch the latest version of signatures from the web"
msgstr "extrage cea mai recentă versiune de semnături de pe web" msgstr ""
#: /usr/lib/python3.11/optparse.py #: /usr/lib/python3.11/optparse.py
msgid "floating-point" msgid "floating-point"
@ -2322,7 +2228,7 @@ msgstr "șir de opțiuni invalid %(option)r: trebuie să înceapă cu un caracte
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "ipfs_cid not found, skipping CIDv1 generation" msgid "ipfs_cid not found, skipping CIDv1 generation"
msgstr "ipfs_cid nu a fost găsit, sărind peste generarea CIDv1" msgstr ""
#: ../fdroidserver/checkupdates.py #: ../fdroidserver/checkupdates.py
#, python-brace-format #, python-brace-format
@ -2347,11 +2253,6 @@ msgstr "local_copy_dir trebuie să fie un director, nu un fișier!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "oglinda '%s' nu se termină cu 'fdroid'!" msgstr "oglinda '%s' nu se termină cu 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Acum setați-le în config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2361,7 +2262,7 @@ msgstr "argumentele care se exclud reciproc trebuie să fie opționale"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, python-brace-format
msgid "next {name} cache update due in {time}" msgid "next {name} cache update due in {time}"
msgstr "următoarea actualizare a memoriei cache {name} va fi efectuată în {time}" msgstr ""
#: ../fdroidserver/mirror.py #: ../fdroidserver/mirror.py
#, python-brace-format #, python-brace-format
@ -2472,8 +2373,9 @@ msgid "optional arguments"
msgstr "argumente opționale" msgstr "argumente opționale"
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
#, fuzzy
msgid "options" msgid "options"
msgstr "opțiuni" msgstr "Opțiuni"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
#, python-brace-format #, python-brace-format
@ -2493,7 +2395,7 @@ msgstr "jurnalul procesului deploy {path} la {dest} a eșuat!"
#: ../fdroidserver/build.py #: ../fdroidserver/build.py
msgid "reference binary missing signature" msgid "reference binary missing signature"
msgstr "referință binară semnătură lipsă" msgstr ""
#: ../fdroidserver/signatures.py #: ../fdroidserver/signatures.py
#, python-brace-format #, python-brace-format
@ -2509,11 +2411,6 @@ msgstr "repo_icon \"repo/icons/%s\" nu există, se generează un înlocuitor."
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url trebuie să se termine cu /repo" msgstr "repo_url trebuie să se termine cu /repo"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "ruamel.yaml nu este instalat, nu poate scrie metadatele." msgstr "ruamel.yaml nu este instalat, nu poate scrie metadatele."
@ -2526,12 +2423,7 @@ msgstr "s3cmd sincronizează indexurile {path} cu {url} și șterge"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, python-brace-format
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "cache-ul scanerului este deformat! Puteți să o ștergeți cu: '{clear}'" msgstr ""
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir nu se termină cu \"fdroid\", poate ai vrut să spui: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
@ -2579,7 +2471,7 @@ msgstr "bibliotecă statică"
#: ../fdroidserver/build.py #: ../fdroidserver/build.py
#, python-brace-format #, python-brace-format
msgid "supplied reference binary has allowed signer {signer}" msgid "supplied reference binary has allowed signer {signer}"
msgstr "binare de referință furnizate au permis semnatarului {signer}" msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
@ -2704,7 +2596,7 @@ msgid "{build_flag} must be an integer, found: {value}"
msgstr "{build_flag} trebuie să fie un număr întreg, găsit: {value}" msgstr "{build_flag} trebuie să fie un număr întreg, găsit: {value}"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, fuzzy, python-brace-format
msgid "{build_flag} must be list or string, found: {value}" msgid "{build_flag} must be list or string, found: {value}"
msgstr "{build_flag} trebuie să fie un număr întreg, găsit: {value}" msgstr "{build_flag} trebuie să fie un număr întreg, găsit: {value}"
@ -2738,31 +2630,6 @@ msgstr "{path} nu există! Creați-l prin rularea:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} are o semnătură proastă a fișierului \"{pattern}\", posibil exploit Janus!" msgstr "{path} are o semnătură proastă a fișierului \"{pattern}\", posibil exploit Janus!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' nu este setat în 'config.yml'!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2773,11 +2640,6 @@ msgstr "{path} este de dimensiune zero!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} mai mult de 200MB, încărcați manual: {url}" msgstr "{path} mai mult de 200MB, încărcați manual: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -12,21 +12,20 @@
# Чтабс <chtabs2k19@gmail.com>, 2021. # Чтабс <chtabs2k19@gmail.com>, 2021.
# Andrei Stepanov <adem4ik@gmail.com>, 2022. # Andrei Stepanov <adem4ik@gmail.com>, 2022.
# Макар Разин <makarrazin14@gmail.com>, 2023. # Макар Разин <makarrazin14@gmail.com>, 2023.
# Alexander Ivanov <saiv46.dev@gmail.com>, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n" "Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-02-23 12:59+0000\n" "PO-Revision-Date: 2023-05-28 07:54+0000\n"
"Last-Translator: Alexander Ivanov <saiv46.dev@gmail.com>\n" "Last-Translator: Andrey <andrey@mailbox.org>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/>\n" "Language-Team: Russian <https://hosted.weblate.org/projects/f-droid/fdroidserver/ru/>\n"
"Language: ru\n" "Language: ru\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 4.18-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -43,7 +42,7 @@ msgid ""
"{path} encoded for the DEBUG_KEYSTORE secret variable:" "{path} encoded for the DEBUG_KEYSTORE secret variable:"
msgstr "" msgstr ""
"\n" "\n"
"{path} закодирован в скрытую переменную DEBUG_KEYSTORE:" "зашифрованный путь {path}, который будет присвоен скрытой переменной DEBUG_KEYSTORE:"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-format #, python-format
@ -107,15 +106,10 @@ msgstr[2] "Параметр %(option)s требует %(number)d аргумен
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: ошибка: %(message)s\n" msgstr "%(prog)s: ошибка: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
msgstr "%d ошибок найдено" msgstr "найдено %d ошибок"
#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py
#: /usr/lib/python3.7/optparse.py /usr/lib/python3.9/optparse.py #: /usr/lib/python3.7/optparse.py /usr/lib/python3.9/optparse.py
@ -162,15 +156,15 @@ msgstr "Значение 'keystore` — NONE, но 'smartcardoptions' не за
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "'keystore' not found in config.yml!" msgid "'keystore' not found in config.yml!"
msgstr "'keystore' не найден в config.yml!" msgstr "В config.yml нет переменной 'keystore'!"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "'keystorepass' not found in config.yml!" msgid "'keystorepass' not found in config.yml!"
msgstr "'keystorepass' не найден в config.yml!" msgstr "В config.yml нет переменной 'keystorepass'!"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "'repo_keyalias' not found in config.yml!" msgid "'repo_keyalias' not found in config.yml!"
msgstr "'repo_keyalias' не найден в config.yml!" msgstr "В config.yml нет переменной 'repo_ keyalias'!"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
@ -231,11 +225,6 @@ msgstr "Не хватает /issues"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "В качестве аргумента нужен URL-адрес!" msgstr "В качестве аргумента нужен URL-адрес!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "В {path} не обнаружены сертификаты для подписывания"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Добавить PGP подписи для пакетов в репозитории с помощью GnuPG" msgstr "Добавить PGP подписи для пакетов в репозитории с помощью GnuPG"
@ -313,11 +302,6 @@ msgstr "Приложение имеет двоичные файлы, но не
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Приложение имеет NoSourceSince или ArchivePolicy \"0 версий\", но AutoUpdateMode или UpdateCheckMode не равны None" msgstr "Приложение имеет NoSourceSince или ArchivePolicy \"0 версий\", но AutoUpdateMode или UpdateCheckMode не равны None"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Приложение имеет NoSourceSince или ArchivePolicy \"0 версий\", но AutoUpdateMode или UpdateCheckMode не равны None"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -415,11 +399,6 @@ msgstr "Неправильные категории: '%s'"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "Категории не выбраны" msgstr "Категории не выбраны"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Проверить обновления для приложений" msgstr "Проверить обновления для приложений"
@ -550,7 +529,7 @@ msgstr "Переменная DEBUG_KEYSTORE пустая или заполнен
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
msgid "Delete APKs and/or OBBs without metadata from the repo" msgid "Delete APKs and/or OBBs without metadata from the repo"
msgstr "Удалить APK и/или OBB без метаданных из репозитория" msgstr "Удалить из репозитория APK и/или OBB файлы без метаданных"
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
@ -586,16 +565,6 @@ msgstr "В описании есть неразмеченный список (%s
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "Описание {length} превышает лимит по количеству знаков {limit}" msgstr "Описание {length} превышает лимит по количеству знаков {limit}"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Не добавлять 'disable:' к сгенерированным данным сборки" msgstr "Не добавлять 'disable:' к сгенерированным данным сборки"
@ -662,11 +631,6 @@ msgstr "Дублирующаяся запись \"%s\" в конфигураци
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Точная копия ссылки в '{field}': {url}" msgstr "Точная копия ссылки в '{field}': {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "ОШИБКА: подкоманда \"server\" была удалена, используйте \"deploy\"!" msgstr "ОШИБКА: подкоманда \"server\" была удалена, используйте \"deploy\"!"
@ -837,11 +801,6 @@ msgstr "Для некоторых приложений обнаружены не
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "В {path} обнаружено несколько сертификатов (JAR Signature Block File)" msgstr "В {path} обнаружено несколько сертификатов (JAR Signature Block File)"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Для этого репозитория обнаружено несколько ключей для подписывания."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -906,11 +865,6 @@ msgstr "Не удалось настроить HEAD для удаленного
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Не удалось отменить изменения (git reset)" msgstr "Не удалось отменить изменения (git reset)"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Не удалось обновить модули Git (git submodules update)"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Не удалось синхронизировать модули Git (git submodules sync)" msgstr "Не удалось синхронизировать модули Git (git submodules sync)"
@ -1116,10 +1070,6 @@ msgstr "Сохранение неудачной сборки \"{apkfilename}\""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Хранилище ключа для подписывания:→\t" msgstr "Хранилище ключа для подписывания:→\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1257,11 +1207,6 @@ msgstr "Теги не найдены"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Директории с неподписанными данными не существует. До новых встреч" msgstr "Директории с неподписанными данными не существует. До новых встреч"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "информация о версии не найдена"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Неверное определение размера: \"{}\"" msgstr "Неверное определение размера: \"{}\""
@ -1420,11 +1365,6 @@ msgstr "Отправить лог в удаленный репозиторий g
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Публикация лога прозрачности кода в {url}" msgstr "Публикация лога прозрачности кода в {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Не удалось настроить HEAD для удаленного репозитория (git remote set-head): \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1432,7 +1372,7 @@ msgstr "Публикация в {url}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Quickly start a new repository" msgid "Quickly start a new repository"
msgstr "Быстро создать новый репозиторий" msgstr "Создать новый репозиторий (укороченная процедура)"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Read all the metadata files and exit" msgid "Read all the metadata files and exit"
@ -1458,11 +1398,6 @@ msgstr "Не удалось прочитать packageName/versionCode/versionNa
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Чтение {apkfilename} из кеша" msgstr "Чтение {apkfilename} из кеша"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "получить последнюю версию подписей из интернета"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Удаление выбранных файлов" msgstr "Удаление выбранных файлов"
@ -1599,7 +1534,7 @@ msgstr "Подписать пакеты и поместить в репозит
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Sign indexes created using update --nosign" msgid "Sign indexes created using update --nosign"
msgstr "Подписать индексы созданные с \"update --nosign\"" msgstr "Подписать индексы, созданные с флагом \"update --nosign\""
#: ../fdroidserver/build.py #: ../fdroidserver/build.py
msgid "Skip scanning the source code for binaries and other problems" msgid "Skip scanning the source code for binaries and other problems"
@ -1713,13 +1648,6 @@ msgstr "Есть расхождения в алиасах ключей для п
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Это те приложения, которые были заархивированы из основного репозитория." msgstr "Это те приложения, которые были заархивированы из основного репозитория."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"ОШИБКА: эту команду ни в коем случае нельзя использовать для создания зеркала f-droid.org!\n"
"Оно занимает больше 200 Гб."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Это репозиторий приложений, предназначенных для использования в FDroid. Приложения в этом репозитории являются либо официальными бинарными файлами, созданными разработчиками оригинального приложения, либо бинарными файлами, созданными f-droid.org из исходного кода с помощью инструментов на https://gitlab.com/fdroid." msgstr "Это репозиторий приложений, предназначенных для использования в FDroid. Приложения в этом репозитории являются либо официальными бинарными файлами, созданными разработчиками оригинального приложения, либо бинарными файлами, созданными f-droid.org из исходного кода с помощью инструментов на https://gitlab.com/fdroid."
@ -1888,13 +1816,8 @@ msgstr "URL-адрес в UpdateCheckData должен начинаться с H
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData содержит некорректный URL-адрес: {url}" msgstr "UpdateCheckData содержит некорректный URL-адрес: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode настроен, но похоже, что команда checkupdates еще не была запущена"
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode настроен, но похоже, что команда checkupdates еще не была запущена" msgstr "UpdateCheckMode настроен, но похоже, что команда checkupdates еще не была запущена"
@ -1925,11 +1848,6 @@ msgstr "Использование"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Использование: %s\n" msgstr "Использование: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Указывайте /HEAD, а не /master, ссылаясь на файл в ветке по умолчанию"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Указывайте /HEAD, а не /master, ссылаясь на файл в ветке по умолчанию" msgstr "Указывайте /HEAD, а не /master, ссылаясь на файл в ветке по умолчанию"
@ -1959,11 +1877,6 @@ msgstr "Используется схема подписи APK v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Используется схема подписи APK v3" msgstr "Используется схема подписи APK v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Используется схема подписи APK v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Проверка APK с помощью Java jarsigner. Так делать не следует! Пользуйтесь для этого apksigner" msgstr "Проверка APK с помощью Java jarsigner. Так делать не следует! Пользуйтесь для этого apksigner"
@ -1998,7 +1911,7 @@ msgstr "Сверяться с закешированной копией вмес
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Verify the integrity of downloaded packages" msgid "Verify the integrity of downloaded packages"
msgstr "Проверить целостность загруженных пакетов" msgstr "Проверить загруженные пакеты на повреждения"
#: ../fdroidserver/index.py #: ../fdroidserver/index.py
msgid "Verifying index signature:" msgid "Verifying index signature:"
@ -2021,10 +1934,6 @@ msgstr "Даже если в конфигурации сборки задано
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "При проверке целого репозитория, yamllint по умолчанию отключен. Этот параметр принудительно включает yamllint." msgstr "При проверке целого репозитория, yamllint по умолчанию отключен. Этот параметр принудительно включает yamllint."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "При генерации ключей использовалось различимое имя (Distinguished Name) стандарта X.509" msgstr "При генерации ключей использовалось различимое имя (Distinguished Name) стандарта X.509"
@ -2175,11 +2084,6 @@ msgstr "конфликтный субпарсер:%s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "не удалось разобрать '{path}'" msgstr "не удалось разобрать '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "не удалось разобрать спецификацию scrlib (не задана ссылка): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "не удалось разобрать спецификацию scrlib (не задана ссылка): '{}'" msgstr "не удалось разобрать спецификацию scrlib (не задана ссылка): '{}'"
@ -2355,11 +2259,6 @@ msgstr "local_copy_dir должна быть директорией, а не ф
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "адрес зеркала '%s' должен заканчиваться 'fdroid'!" msgstr "адрес зеркала '%s' должен заканчиваться 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Определите эти переменные в config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2517,11 +2416,6 @@ msgstr "значок репозитория (repo_icon) 'repo/icons/%s' не с
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url должен оканчиваться «/repo»" msgstr "repo_url должен оканчиваться «/repo»"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "ruamel.yaml не установлен, не получается записать метаданные." msgstr "ruamel.yaml не установлен, не получается записать метаданные."
@ -2536,11 +2430,6 @@ msgstr "s3cmd синхронизировать индексы из {path} в {ur
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "кэш сканера поврежден! Вы можете очистить его с помощью: '{clear}'" msgstr "кэш сканера поврежден! Вы можете очистить его с помощью: '{clear}'"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir должна заканчиваться на \"fdroid\". Возможно, имелось в виду \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "разделяемая библиотека" msgstr "разделяемая библиотека"
@ -2746,31 +2635,6 @@ msgstr "{path} не существует! Создайте, выполнив к
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path}: неверная подпись \"{pattern}\". Выглядит подозрительно и похоже на попытку нарушения безопасности (Janus exploit)!" msgstr "{path}: неверная подпись \"{pattern}\". Выглядит подозрительно и похоже на попытку нарушения безопасности (Janus exploit)!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' не найден в config.yml!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2781,11 +2645,6 @@ msgstr "размер {path} равен нулю!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "Размер {path} больше 200MB, загрузите его вручную на {url}" msgstr "Размер {path} больше 200MB, загрузите его вручную на {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.0.6-349-g907c04ea\n" "Project-Id-Version: fdroidserver 1.0.6-349-g907c04ea\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Automatically generated\n" "Last-Translator: Automatically generated\n"
"Language-Team: none\n" "Language-Team: none\n"
@ -90,11 +90,6 @@ msgstr[2] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -214,11 +209,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -296,10 +286,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -397,11 +383,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -568,16 +549,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -644,11 +615,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -815,10 +781,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -883,10 +845,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1092,10 +1050,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1233,10 +1187,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1395,10 +1345,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1432,10 +1378,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1686,10 +1628,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1851,10 +1789,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1887,10 +1821,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1920,10 +1850,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1981,10 +1907,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2135,10 +2057,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2314,11 +2232,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2476,11 +2389,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2495,10 +2403,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2704,31 +2608,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2739,11 +2618,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -1,13 +1,13 @@
# SOME DESCRIPTIVE TITLE. # SOME DESCRIPTIVE TITLE.
# This file is put in the public domain. # This file is put in the public domain.
# Besnik Bleta <besnik@programeshqip.org>, 2020, 2021, 2022, 2023, 2024. # Besnik Bleta <besnik@programeshqip.org>, 2020, 2021, 2022, 2023.
# Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021. # Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.0.6-349-g907c04ea\n" "Project-Id-Version: fdroidserver 1.0.6-349-g907c04ea\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-02-20 18:58+0000\n" "PO-Revision-Date: 2023-02-25 12:43+0000\n"
"Last-Translator: Besnik Bleta <besnik@programeshqip.org>\n" "Last-Translator: Besnik Bleta <besnik@programeshqip.org>\n"
"Language-Team: Albanian <https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/>\n" "Language-Team: Albanian <https://hosted.weblate.org/projects/f-droid/fdroidserver/sq/>\n"
"Language: sq\n" "Language: sq\n"
@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 4.16-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -95,11 +95,6 @@ msgstr[1] "Mundësi %(option)s lyp %(number)d argumente"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: gabim: %(message)s\n" msgstr "%(prog)s: gabim: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -121,7 +116,7 @@ msgstr "%r smund të thirret"
#: ../fdroidserver/signindex.py #: ../fdroidserver/signindex.py
#, python-format #, python-format
msgid "%s did not produce a dict!" msgid "%s did not produce a dict!"
msgstr "%s sprodhoi një “dict”!" msgstr ""
#: ../fdroidserver/signindex.py #: ../fdroidserver/signindex.py
#, python-format #, python-format
@ -188,7 +183,7 @@ msgstr "Su arrit të përmbushet '{path}'!"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "'{path}' has invalid format, it should be a dictionary!" msgid "'{path}' has invalid format, it should be a dictionary!"
msgstr "'{path}' ka format të pavlefshëm, duhet të jetë një fjalor!" msgstr ""
#: ../fdroidserver/metadata.py ../fdroidserver/lint.py #: ../fdroidserver/metadata.py ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
@ -196,9 +191,9 @@ msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}"
msgstr "'{value}' sështë një {field} e vlefshme te {appid}. Rregullsi shprehjeje të rregullt: {pattern}" msgstr "'{value}' sështë një {field} e vlefshme te {appid}. Rregullsi shprehjeje të rregullt: {pattern}"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, fuzzy, python-brace-format
msgid "'{value}' is not a valid {field}, should be {pattern}" msgid "'{value}' is not a valid {field}, should be {pattern}"
msgstr "'{value}' sështë një {field} e vlefshme, duhet të jetë {pattern}" msgstr "'{value}' sështë një {field} e vlefshme te {appid}. Rregullsi shprehjeje të rregullt: {pattern}"
#: ../fdroidserver/checkupdates.py #: ../fdroidserver/checkupdates.py
#, python-brace-format #, python-brace-format
@ -219,11 +214,6 @@ msgstr "/issues mungon"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "Lypset një URL si argument!" msgstr "Lypset një URL si argument!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "Su gjetën dëshmi nënshkrimi te {path}"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Shtoni për paketa në depo nënshkrime PGP duke përdorur GnuPG-në" msgstr "Shtoni për paketa në depo nënshkrime PGP duke përdorur GnuPG-në"
@ -295,17 +285,12 @@ msgstr "Su gjet {cmd} mjeti SDK-je Android!"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "App has Binaries but does not have corresponding AllowedAPKSigningKeys to pin certificate." msgid "App has Binaries but does not have corresponding AllowedAPKSigningKeys to pin certificate."
msgstr "Aplikacioni ka Dyorë, por ska AllowedAPKSigningKeys përkatës për të fiksuar dëshmi." msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Aplikacioni ka NoSourceSince ose ArchivePolicy “0 versione”, por AutoUpdateMode ose UpdateCheckMode janë vënë si “Asnjë”" msgstr "Aplikacioni ka NoSourceSince ose ArchivePolicy “0 versione”, por AutoUpdateMode ose UpdateCheckMode janë vënë si “Asnjë”"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Aplikacioni ka NoSourceSince ose ArchivePolicy “0 versione”, por AutoUpdateMode ose UpdateCheckMode janë vënë si “Asnjë”"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -313,7 +298,7 @@ msgstr "Aplikacioni gjendet në '{repo}' por ka një lidhje te {url}"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "App version has binary but does not have corresponding AllowedAPKSigningKeys to pin certificate." msgid "App version has binary but does not have corresponding AllowedAPKSigningKeys to pin certificate."
msgstr "Aplikacioni ka dyor, por ska AllowedAPKSigningKeys përkatës për të fiksuar dëshmi." msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Appending .git is not necessary" msgid "Appending .git is not necessary"
@ -331,7 +316,7 @@ msgstr "AutoUpdateMode me UpdateCheckMode: HTTP duhet të ketë një rregullsi."
#: ../fdroidserver/index.py #: ../fdroidserver/index.py
#, python-brace-format #, python-brace-format
msgid "Bad entry type \"{mirrortype}\" in mirrors config: {mirror}" msgid "Bad entry type \"{mirrortype}\" in mirrors config: {mirror}"
msgstr "Lloj i gabuar zëri “{mirrortype}” në formësim pasqyrash: {mirror}" msgstr ""
#: ../fdroidserver/mirror.py #: ../fdroidserver/mirror.py
msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint=" msgid "Base URL to mirror, can include the index signing key using the query string: ?fingerprint="
@ -402,11 +387,6 @@ msgstr "Kategoritë '%s' sjanë të vlefshme"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "Sjanë ujdisur kategori" msgstr "Sjanë ujdisur kategori"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Kontrollo për përditësime aplikacionesh" msgstr "Kontrollo për përditësime aplikacionesh"
@ -436,7 +416,7 @@ msgstr "Depozito ndryshimet"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Conflicting \"{field}\" definitions between .yml and localized files:" msgid "Conflicting \"{field}\" definitions between .yml and localized files:"
msgstr "Përkufizime “{field}” me përplasje, mes kartelash .yml dhe të përkthyerash:" msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Conflicting arguments: '--verbose' and '--quiet' can not be specified at the same time." msgid "Conflicting arguments: '--verbose' and '--quiet' can not be specified at the same time."
@ -573,16 +553,6 @@ msgstr "Përshkrimi ka një listë (%s), por kjo sështë as me toptha (*), a
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "Përshkrimi me gjatësi {length} është mbi kufirin prej {limit} shenjash" msgstr "Përshkrimi me gjatësi {length} është mbi kufirin prej {limit} shenjash"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Mos shtoni 'disable:' te zëra të prodhuar të montimit" msgstr "Mos shtoni 'disable:' te zëra të prodhuar të montimit"
@ -642,18 +612,13 @@ msgstr ""
#: ../fdroidserver/index.py #: ../fdroidserver/index.py
#, python-format #, python-format
msgid "Duplicate entry \"%s\" in mirrors config!" msgid "Duplicate entry \"%s\" in mirrors config!"
msgstr "Zë i përsëdytur “%s” në formësim pasqyrash!" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Lidhje e përsëdytur te '{field}': {url}" msgstr "Lidhje e përsëdytur te '{field}': {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "GABIM: Nënurdhri “server” është hequr, përdorni “deploy”!" msgstr "GABIM: Nënurdhri “server” është hequr, përdorni “deploy”!"
@ -700,7 +665,7 @@ msgstr "Gabim teksa merrej adresë depoje"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "Exit with a non-zero code if problems were found" msgid "Exit with a non-zero code if problems were found"
msgstr "Dil me një kod jozero, nëse gjenden probleme" msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Extract application metadata from a source repository" msgid "Extract application metadata from a source repository"
@ -824,11 +789,6 @@ msgstr "U gjetën versionCodes të pavlefshëm për disa aplikacione"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Te {path} u gjetën Kartela të shumta JAR Blloqesh Nënshkrimi" msgstr "Te {path} u gjetën Kartela të shumta JAR Blloqesh Nënshkrimi"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "U gjetën dëshmi të shumta nënshkrimi për depon."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -893,11 +853,6 @@ msgstr "Veprimi “git remote set-head” dështoi: “%s”"
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Veprimi “git reset” dështoi" msgstr "Veprimi “git reset” dështoi"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Veprimi “git submodule update” dështoi"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Veprimi “git submodule sync” dështoi" msgstr "Veprimi “git submodule sync” dështoi"
@ -932,7 +887,7 @@ msgstr "Po shpërfillen zëra FUNDING.yml më të gjatë se 2048: %s"
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-format #, python-format
msgid "Ignoring bad element in manifest: %s" msgid "Ignoring bad element in manifest: %s"
msgstr "Po shpërfillet element i gabuar në manifest: %s" msgstr ""
#: ../fdroidserver/index.py #: ../fdroidserver/index.py
msgid "Ignoring package without metadata: " msgid "Ignoring package without metadata: "
@ -1103,10 +1058,6 @@ msgstr "Po mbahet montim i dështuar “{apkfilename}”"
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Depo kyçesh për kyç nënshkrimi:\t" msgstr "Depo kyçesh për kyç nënshkrimi:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1139,7 +1090,7 @@ msgstr "Rresht serverwebroot i keqformuar:"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "Max recursion depth in ZIP file reached: %s" msgid "Max recursion depth in ZIP file reached: %s"
msgstr "U mbërrit në thellësi maksimum rekursive te kartelë ZIP: %s" msgstr ""
#: ../fdroidserver/mirror.py #: ../fdroidserver/mirror.py
msgid "Mirror the full repo and archive, all file types." msgid "Mirror the full repo and archive, all file types."
@ -1151,7 +1102,7 @@ msgstr "Mungon drejtori përfundimesh"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "Moving Anti-Features declarations to localized files:" msgid "Moving Anti-Features declarations to localized files:"
msgstr "Po kalohen pohime Anti-Features te kartela të përkthyera:" msgstr ""
#: ../fdroidserver/index.py #: ../fdroidserver/index.py
msgid "Neither \"repo_pubkey\" nor \"keystorepass\" set in config.yml" msgid "Neither \"repo_pubkey\" nor \"keystorepass\" set in config.yml"
@ -1244,11 +1195,6 @@ msgstr "Su gjetën etiketa"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Ska drejtori të panënshkruar - ska çbëhet" msgstr "Ska drejtori të panënshkruar - ska çbëhet"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "su gjetën hollësi versioni"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Përkufizim jo i vlefshëm për madhësinë: “{}”" msgstr "Përkufizim jo i vlefshëm për madhësinë: “{}”"
@ -1407,11 +1353,6 @@ msgstr "Kryej <em>push</em> të regjistrit te kjo depo e largët git"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Veprimi “git remote set-head” dështoi: “%s”"
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1445,11 +1386,6 @@ msgstr "Leximi i packageName/versionCode/versionName dështoi, APK e pavlefshme:
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Po lexohet {apkfilename} prej fshehtine" msgstr "Po lexohet {apkfilename} prej fshehtine"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "sill nga interneti versionin më të ri të nënshkrimeve"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Po hiqen kartelat e treguara" msgstr "Po hiqen kartelat e treguara"
@ -1699,13 +1635,6 @@ msgstr "Ka një përplasje keyalias-i - botimi u ndal"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Këto janë aplikacionet që janë arkivuar nga depoja kryesore." msgstr "Këto janë aplikacionet që janë arkivuar nga depoja kryesore."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"GABIM: ky urdhër sduhet përdorur kurrë për krijimin e një pasqyre të f-droid.org!\n"
"Një pasqyrë e plotë e f-droid.org lyp më tepër se 200GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Kjo është një depo aplikacionesh për tu përdorur me F-Droid. Aplikacionet në këtë depo ose janë dyorë zyrtarë të montuar nga zhvilluesit e aplikacionit origjinal, ose janë dyorë të montuar nga burimi prej f-droid.org duke përdorur mjetet në https://gitlab.com/fdroid." msgstr "Kjo është një depo aplikacionesh për tu përdorur me F-Droid. Aplikacionet në këtë depo ose janë dyorë zyrtarë të montuar nga zhvilluesit e aplikacionit origjinal, ose janë dyorë të montuar nga burimi prej f-droid.org duke përdorur mjetet në https://gitlab.com/fdroid."
@ -1875,13 +1804,8 @@ msgstr "UpdateCheckData duhet të përdorë URL HTTPS: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData sështë URL e vlefshme: {url}" msgstr "UpdateCheckData sështë URL e vlefshme: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode është ujdisur, por duket sikur checkupdates sështë xhiruar ende"
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode është ujdisur, por duket sikur checkupdates sështë xhiruar ende" msgstr "UpdateCheckMode është ujdisur, por duket sikur checkupdates sështë xhiruar ende"
@ -1912,11 +1836,6 @@ msgstr "Përdorim"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Përdorim: %s\n" msgstr "Përdorim: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Për të treguar një kartelë te dega parazgjedhje, përdorni /HEAD, në vend se /master"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Për të treguar një kartelë te dega parazgjedhje, përdorni /HEAD, në vend se /master" msgstr "Për të treguar një kartelë te dega parazgjedhje, përdorni /HEAD, në vend se /master"
@ -1946,11 +1865,6 @@ msgstr "Po përdoret Nënshkrimi APK-je v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Po përdoret Nënshkrimi APK-je v3" msgstr "Po përdoret Nënshkrimi APK-je v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Po përdoret Nënshkrimi APK-je v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Po përdoret jarsigner Java, srekomandohet për verifikim APK-sh! Përdorni apksigner" msgstr "Po përdoret jarsigner Java, srekomandohet për verifikim APK-sh! Përdorni apksigner"
@ -1963,7 +1877,7 @@ msgstr "Po përdoret androguard prej “{path}”"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Using blank dictionary instead of contents of {path}!" msgid "Using blank dictionary instead of contents of {path}!"
msgstr "Po përdoret fjalor i zbrazët, në vend se lënda e {path}!" msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
#, python-brace-format #, python-brace-format
@ -2008,10 +1922,6 @@ msgstr "Kur është formësuar për tregues të nënshkruar, në këtë fazë kr
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'Distinguished Name' i përdorur teksa prodhoheshin kyçe" msgstr "X.509 'Distinguished Name' i përdorur teksa prodhoheshin kyçe"
@ -2135,7 +2045,7 @@ msgstr "urdhra prej modulesh shtojce:"
#: /usr/lib/python3.7/optparse.py /usr/lib/python3.9/optparse.py #: /usr/lib/python3.7/optparse.py /usr/lib/python3.9/optparse.py
#: /usr/lib/python3.11/optparse.py #: /usr/lib/python3.11/optparse.py
msgid "complex" msgid "complex"
msgstr "kompleks" msgstr "kompleksë"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
@ -2147,25 +2057,20 @@ msgstr[0] "varg mundësie me përplasje: %s"
msgstr[1] "vargje mundësish me përplasje: %s" msgstr[1] "vargje mundësish me përplasje: %s"
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
#, python-format #, fuzzy, python-format
msgid "conflicting subparser alias: %s" msgid "conflicting subparser alias: %s"
msgstr "" msgstr "varg mundësie me përplasje: %s"
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
#, python-format #, fuzzy, python-format
msgid "conflicting subparser: %s" msgid "conflicting subparser: %s"
msgstr "" msgstr "varg mundësie me përplasje: %s"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "su përtyp dot '{path}'" msgstr "su përtyp dot '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "su përtyp dot specifikim scrlib (su dha referencë): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "su përtyp dot specifikim scrlib (su dha referencë): '{}'" msgstr "su përtyp dot specifikim scrlib (su dha referencë): '{}'"
@ -2340,11 +2245,6 @@ msgstr "local_copy_dir duhet të jetë një drejtori, jo një kartelë!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "pasqyra '%s' spërfundon me 'fdroid'!" msgstr "pasqyra '%s' spërfundon me 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Tani, ujdisini këto te config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2502,11 +2402,6 @@ msgstr "repo_icon “repo/icons/%s” sekziston, po prodhohet vendmbajtëse."
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url lypset të përfundojë me /repo" msgstr "repo_url lypset të përfundojë me /repo"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "ruamel.yaml sështë i instaluar, smund të shkruhen tejtëdhëna." msgstr "ruamel.yaml sështë i instaluar, smund të shkruhen tejtëdhëna."
@ -2521,11 +2416,6 @@ msgstr "s3cmd sync indexes {path} to {url} and delete"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "fshehtina e kontrollorit është e keqformuar! Mund ta spastroni me: “{clear}”" msgstr "fshehtina e kontrollorit është e keqformuar! Mund ta spastroni me: “{clear}”"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir does smbaron me “fdroid”, ndoshta kishit në mendje: “{path}”"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "librari e përbashkët" msgstr "librari e përbashkët"
@ -2696,9 +2586,9 @@ msgid "{build_flag} must be an integer, found: {value}"
msgstr "{build_flag} duhet të jetë numër i plotë, u gjet: {value}" msgstr "{build_flag} duhet të jetë numër i plotë, u gjet: {value}"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, fuzzy, python-brace-format
msgid "{build_flag} must be list or string, found: {value}" msgid "{build_flag} must be list or string, found: {value}"
msgstr "{build_flag} duhet të jetë listë, ose varg, u gjet: {value}" msgstr "{build_flag} duhet të jetë numër i plotë, u gjet: {value}"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
@ -2730,31 +2620,6 @@ msgstr "{path} sekziston! Krijojeni duke xhiruar:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} ka “{pattern}” të gabuar nënshkrimi kartele, ka gjasa të jetë rreng Janus!" msgstr "{path} ka “{pattern}” të gabuar nënshkrimi kartele, ka gjasa të jetë rreng Janus!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' te 'config.yml' sështë ujdisur!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2765,11 +2630,6 @@ msgstr "{path} është me madhësi zero!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} më tepër se 200MB, ngarkojeni dorazi: {url}" msgstr "{path} më tepër se 200MB, ngarkojeni dorazi: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 2.1b0\n" "Project-Id-Version: fdroidserver 2.1b0\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2022-11-28 13:20+0000\n" "PO-Revision-Date: 2022-11-28 13:20+0000\n"
"Last-Translator: Đorđe Vasiljević <djordje.vasiljevich@gmail.com>\n" "Last-Translator: Đorđe Vasiljević <djordje.vasiljevich@gmail.com>\n"
"Language-Team: Serbian <https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/>\n" "Language-Team: Serbian <https://hosted.weblate.org/projects/f-droid/fdroidserver/sr/>\n"
@ -91,11 +91,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -215,11 +210,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -297,10 +287,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -397,11 +383,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -568,16 +549,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -644,11 +615,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -815,10 +781,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -883,10 +845,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1092,10 +1050,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1233,10 +1187,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1395,10 +1345,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1432,10 +1378,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1685,10 +1627,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1850,10 +1788,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1886,10 +1820,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1919,10 +1849,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1980,10 +1906,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2133,10 +2055,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2311,11 +2229,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2473,11 +2386,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2492,10 +2400,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2700,31 +2604,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2735,11 +2614,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -1792,7 +1792,7 @@ msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet." msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py

View File

@ -1789,7 +1789,7 @@ msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet." msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py

View File

@ -2,22 +2,22 @@
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# Oğuz Ersen <oguzersen@protonmail.com>, 2020, 2021, 2022. # Oğuz Ersen <oguzersen@protonmail.com>, 2020, 2021, 2022.
# Orhan <orya@pm.me>, 2021. # Orhan <orya@pm.me>, 2021.
# Oğuz Ersen <oguz@ersen.moe>, 2022, 2023, 2024. # Oğuz Ersen <oguz@ersen.moe>, 2022, 2023.
# Bai <batuhanakkurt000@gmail.com>, 2023. # Bai <batuhanakkurt000@gmail.com>, 2023.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-11 20:02+0000\n" "PO-Revision-Date: 2023-09-09 10:53+0000\n"
"Last-Translator: Oğuz Ersen <oguz@ersen.moe>\n" "Last-Translator: Bai <batuhanakkurt000@gmail.com>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/>\n" "Language-Team: Turkish <https://hosted.weblate.org/projects/f-droid/fdroidserver/tr/>\n"
"Language: tr\n" "Language: tr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 5.0.1-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -97,11 +97,6 @@ msgstr[1] "%(option)s seçeneği %(number)d argüman gerektirir"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: hata: %(message)s\n" msgstr "%(prog)s: hata: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -221,11 +216,6 @@ msgstr "/issues eksik"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "Bir URL, argüman olarak gereklidir!" msgstr "Bir URL, argüman olarak gereklidir!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "{path} içinde imzalama sertifikaları bulunamadı"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Depodaki paketler için GnuPG ile PGP imzaları ekle" msgstr "Depodaki paketler için GnuPG ile PGP imzaları ekle"
@ -303,11 +293,6 @@ msgstr "Uygulama İkili Dosyalara sahip ancak sertifikayı sabitlemek için kar
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Uygulamanın NoSourceSince veya ArchivePolicy \"0 sürümü\" var ancak AutoUpdateMode veya UpdateCheckMode Yok değil" msgstr "Uygulamanın NoSourceSince veya ArchivePolicy \"0 sürümü\" var ancak AutoUpdateMode veya UpdateCheckMode Yok değil"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Uygulamanın NoSourceSince veya ArchivePolicy \"0 sürümü\" var ancak AutoUpdateMode veya UpdateCheckMode Yok değil"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -404,11 +389,6 @@ msgstr "'%s' kategorileri geçersiz"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "Kategoriler ayarlı değil" msgstr "Kategoriler ayarlı değil"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Uygulama güncellemelerini denetle" msgstr "Uygulama güncellemelerini denetle"
@ -575,16 +555,6 @@ msgstr "Açıklamanın bir listesi (%s) var fakat madde imli (*) veya numaralı(
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "{length} uzunluğundaki açıklama, {limit} karakter sınırının üstünde" msgstr "{length} uzunluğundaki açıklama, {limit} karakter sınırının üstünde"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Oluşturulan derleme girdilerine 'disable:' ekleme" msgstr "Oluşturulan derleme girdilerine 'disable:' ekleme"
@ -651,11 +621,6 @@ msgstr "Aynalar yapılandırmasında yinelenen \"%s\" girişi!"
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "'{field}' içinde yinelenen bağlantı: {url}" msgstr "'{field}' içinde yinelenen bağlantı: {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "HATA: \"server\" alt komutu kaldırıldı, \"deploy\" kullanın!" msgstr "HATA: \"server\" alt komutu kaldırıldı, \"deploy\" kullanın!"
@ -826,11 +791,6 @@ msgstr "Bazı uygulamalar için geçersiz versionCodes bulundu"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "{path} içinde birden fazla JAR İmza Blok Dosyası bulundu" msgstr "{path} içinde birden fazla JAR İmza Blok Dosyası bulundu"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Depo için birden çok imzalama sertifikası bulundu."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -895,11 +855,6 @@ msgstr "Git remote set-head başarısız: \"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Git reset başarısız" msgstr "Git reset başarısız"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Git alt modülü güncellemesi başarısız oldu"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Git alt modülü eşzamanlaması başarısız oldu" msgstr "Git alt modülü eşzamanlaması başarısız oldu"
@ -1105,10 +1060,6 @@ msgstr "Başarısız yapı \"{apkfilename}\" tutuluyor"
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "İmzalama için anahtar deposu:\t" msgstr "İmzalama için anahtar deposu:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1246,11 +1197,6 @@ msgstr "Etiket bulunamadı"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "İmzalanmamış dizin yok - yapılacak işlem yok" msgstr "İmzalanmamış dizin yok - yapılacak işlem yok"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "sürüm bilgisi bulunamadı"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Geçerli bir boyut tanımı değil: \"{}\"" msgstr "Geçerli bir boyut tanımı değil: \"{}\""
@ -1409,11 +1355,6 @@ msgstr "Günlüğü bu git uzak deposuna it"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "İkili şeffaflık günlüğü {url} konumuna gönderiliyor" msgstr "İkili şeffaflık günlüğü {url} konumuna gönderiliyor"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Git remote set-head başarısız: \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1447,11 +1388,6 @@ msgstr "packageName/versionCode/versionName okuma başarısız, APK geçersiz: '
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "{apkfilename} önbellekten okunuyor" msgstr "{apkfilename} önbellekten okunuyor"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "imzaların en son sürümünü internetten al"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Belirtilen dosyalar kaldırılıyor" msgstr "Belirtilen dosyalar kaldırılıyor"
@ -1701,13 +1637,6 @@ msgstr "Bir keyalias çakışması var - yayımlama durdu"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Bunlar ana depodan arşivlenmiş uygulamalardır." msgstr "Bunlar ana depodan arşivlenmiş uygulamalardır."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"HATA: bu komut asla f-droid.org'u yansıtmak için kullanılmamalıdır!\n"
"f-droid.org'un tam bir yansıması 200GB'tan çok yer gerektirir."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Bu, F-Droid ile kullanılacak uygulamaların bir deposudur. Bu depodaki uygulamalar ya gerçek uygulama geliştiricileri tarafından oluşturulan resmi ikili dosyalardır ya da https://gitlab.com/fdroid adresindeki araçlar kullanılarak f-droid.org yöneticisi tarafından kaynaktan oluşturulan ikili dosyalardır." msgstr "Bu, F-Droid ile kullanılacak uygulamaların bir deposudur. Bu depodaki uygulamalar ya gerçek uygulama geliştiricileri tarafından oluşturulan resmi ikili dosyalardır ya da https://gitlab.com/fdroid adresindeki araçlar kullanılarak f-droid.org yöneticisi tarafından kaynaktan oluşturulan ikili dosyalardır."
@ -1876,15 +1805,10 @@ msgstr "UpdateCheckData, HTTPS URL'sini kullanmalıdır: {url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData geçerli bir URL değil: {url}" msgstr "UpdateCheckData geçerli bir URL değil: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode ayarlı ancak checkupdates henüz çalıştırılmamış gibi görünüyor."
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode ayarlı ancak checkupdates henüz çalıştırılmamış gibi görünüyor." msgstr "UpdateCheckMode ayarlı ancak checkupdates henüz çalıştırılmamış gibi görünüyor"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckName is set to the known application ID, it can be removed" msgid "UpdateCheckName is set to the known application ID, it can be removed"
@ -1913,11 +1837,6 @@ msgstr "Kullanım"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Kullanım: %s\n" msgstr "Kullanım: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Öntanımlı daldaki bir dosyaya işaret etmek için /master yerine /HEAD kullanın"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Öntanımlı daldaki bir dosyaya işaret etmek için /master yerine /HEAD kullanın" msgstr "Öntanımlı daldaki bir dosyaya işaret etmek için /master yerine /HEAD kullanın"
@ -1947,11 +1866,6 @@ msgstr "APK İmza v2 kullanılıyor"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "APK İmza v3 kullanılıyor" msgstr "APK İmza v3 kullanılıyor"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "APK İmza v2 kullanılıyor"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Java'nın jarsigner'ı kullanılıyor, APK'ları doğrulamak için önerilmez! apksigner'ı kullanın" msgstr "Java'nın jarsigner'ı kullanılıyor, APK'ları doğrulamak için önerilmez! apksigner'ı kullanın"
@ -2009,10 +1923,6 @@ msgstr "İmzalı indeksler için yapılandırıldığında, bu aşamada sadece i
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Tüm depo denetlenirken yamllint öntanımlı olarak devre dışı bırakılır. Bu seçenek, yamllint kullanımını ne olursa olsun zorlar." msgstr "Tüm depo denetlenirken yamllint öntanımlı olarak devre dışı bırakılır. Bu seçenek, yamllint kullanımını ne olursa olsun zorlar."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "Anahtarlar üretilirken X.509 'Distinguished Name' kullanılır" msgstr "Anahtarlar üretilirken X.509 'Distinguished Name' kullanılır"
@ -2162,11 +2072,6 @@ msgstr "çakışan alt ayrıştırıcı: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "'{path}' ayrıştırılamadı" msgstr "'{path}' ayrıştırılamadı"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "srclib belirtimi ayrıştırılamadı (referans belirtilmedi): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "srclib belirtimi ayrıştırılamadı (referans belirtilmedi): '{}'" msgstr "srclib belirtimi ayrıştırılamadı (referans belirtilmedi): '{}'"
@ -2341,11 +2246,6 @@ msgstr "local_copy_dir bir dizin olmalı, dosya değil!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "Yansıma '%s' 'fdroid' ile bitmiyor!" msgstr "Yansıma '%s' 'fdroid' ile bitmiyor!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Şimdi bunları config.yml içinde ayarlayın:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2503,11 +2403,6 @@ msgstr "repo_icon \"repo/icons/%s\" yok, yer tutucu oluşturuyor."
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url'nin /repo ile bitmesi gerekiyor" msgstr "repo_url'nin /repo ile bitmesi gerekiyor"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "ruamel.yaml kurulu değil, üst veriler yazılamıyor." msgstr "ruamel.yaml kurulu değil, üst veriler yazılamıyor."
@ -2522,11 +2417,6 @@ msgstr "s3cmd sync {path} konumunu {url} adresine indeksler ve siler"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "tarayıcı önbelleği bozuk! Şu şekilde temizleyebilirsiniz: '{clear}'" msgstr "tarayıcı önbelleği bozuk! Şu şekilde temizleyebilirsiniz: '{clear}'"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir \"fdroid\" ile sonlanmıyor, belki de \"{path}\" demek istediniz"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "paylaşımlı kütüphane" msgstr "paylaşımlı kütüphane"
@ -2731,31 +2621,6 @@ msgstr "{path} yok! Şunu çalıştırarak oluşturun:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} konumunun bozuk imzası \"{pattern}\" var, olası Janus istismarı!" msgstr "{path} konumunun bozuk imzası \"{pattern}\" var, olası Janus istismarı!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' config.yml içinde ayarlı değil!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2766,11 +2631,6 @@ msgstr "{path} boyutu sıfır!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} 200MB'den fazla, elle yükleyin: {url}" msgstr "{path} 200MB'den fazla, elle yükleyin: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -5,7 +5,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.1-681-gc19e8952\n" "Project-Id-Version: fdroidserver 1.1-681-gc19e8952\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2020-10-29 08:32+0000\n" "PO-Revision-Date: 2020-10-29 08:32+0000\n"
"Last-Translator: Hakim Oubouali <hakim.oubouali.skr@gmail.com>\n" "Last-Translator: Hakim Oubouali <hakim.oubouali.skr@gmail.com>\n"
"Language-Team: Central Atlas Tamazight <https://hosted.weblate.org/projects/f-droid/fdroidserver/tzm/>\n" "Language-Team: Central Atlas Tamazight <https://hosted.weblate.org/projects/f-droid/fdroidserver/tzm/>\n"
@ -90,11 +90,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: tazgalt: %(message)s\n" msgstr "%(prog)s: tazgalt: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -214,11 +209,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -296,10 +286,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -396,11 +382,6 @@ msgstr ""
msgid "Categories are not set" msgid "Categories are not set"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -567,16 +548,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -643,11 +614,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -814,10 +780,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -882,10 +844,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1091,10 +1049,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1232,10 +1186,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
msgid "No version information could be found."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1394,10 +1344,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1431,10 +1377,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1684,10 +1626,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1849,10 +1787,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1885,10 +1819,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1918,10 +1848,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1979,10 +1905,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2132,10 +2054,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2310,11 +2228,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2473,11 +2386,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2492,10 +2400,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2700,31 +2604,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2735,11 +2614,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n" "Project-Id-Version: fdroidserver 1.0.0-95-gd7af22b\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2018-06-08 03:44+0000\n" "PO-Revision-Date: 2018-06-08 03:44+0000\n"
"Last-Translator: ۋولقان <nureliosman@gmail.com>\n" "Last-Translator: ۋولقان <nureliosman@gmail.com>\n"
"Language-Team: Uyghur <https://hosted.weblate.org/projects/f-droid/fdroidserver/ug/>\n" "Language-Team: Uyghur <https://hosted.weblate.org/projects/f-droid/fdroidserver/ug/>\n"
@ -91,11 +91,6 @@ msgstr[1] ""
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -215,11 +210,6 @@ msgstr ""
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "" msgstr ""
@ -297,10 +287,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -397,11 +383,6 @@ msgstr "تۈرلەر قۇرۇلمىغان '%s'"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "تۈرلەر قۇرۇلمىغان" msgstr "تۈرلەر قۇرۇلمىغان"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "" msgstr ""
@ -568,16 +549,6 @@ msgstr ""
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "" msgstr ""
@ -644,11 +615,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "" msgstr ""
@ -815,10 +781,6 @@ msgstr ""
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Found multiple Signer Certificates!"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -883,10 +845,6 @@ msgstr ""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Git submodule deinit failed"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "" msgstr ""
@ -1092,10 +1050,6 @@ msgstr ""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1233,11 +1187,6 @@ msgstr ""
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "" msgstr ""
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "نەشىر ئۇچۇرى تېپىلمىدى!"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "" msgstr ""
@ -1396,10 +1345,6 @@ msgstr ""
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "Pushing to remote server failed!"
msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1433,10 +1378,6 @@ msgstr ""
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "" msgstr ""
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "" msgstr ""
@ -1686,10 +1627,6 @@ msgstr ""
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "" msgstr ""
#: ../fdroidserver/mirror.py
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "" msgstr ""
@ -1851,10 +1788,6 @@ msgstr ""
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1887,10 +1820,6 @@ msgstr ""
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1920,10 +1849,6 @@ msgstr ""
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "Using JAR Signature"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "" msgstr ""
@ -1981,10 +1906,6 @@ msgstr ""
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "" msgstr ""
@ -2134,10 +2055,6 @@ msgstr ""
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "" msgstr ""
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2312,11 +2229,6 @@ msgstr ""
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr ""
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2475,11 +2387,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2494,10 +2401,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2702,31 +2605,6 @@ msgstr ""
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not a standard config file!"
msgstr ""
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2737,11 +2615,6 @@ msgstr ""
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -12,7 +12,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2023-05-28 07:54+0000\n" "PO-Revision-Date: 2023-05-28 07:54+0000\n"
"Last-Translator: Ihor Hordiichuk <igor_ck@outlook.com>\n" "Last-Translator: Ihor Hordiichuk <igor_ck@outlook.com>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/>\n" "Language-Team: Ukrainian <https://hosted.weblate.org/projects/f-droid/fdroidserver/uk/>\n"
@ -102,11 +102,6 @@ msgstr[2] "%(option)s параметр вимагає %(number)d аргумен
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: помилка: %(message)s\n" msgstr "%(prog)s: помилка: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -226,11 +221,6 @@ msgstr "/issues відсутній"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "URL потребується як аргумент!" msgstr "URL потребується як аргумент!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "У {path} не знайдено сертифікатів для підписання"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "Додати підписи GnuPG для пакунків у репозиторії" msgstr "Додати підписи GnuPG для пакунків у репозиторії"
@ -308,11 +298,6 @@ msgstr "Програма має двійкові файли, але не має
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Застосунок має NoSourceSince або ArchivePolicy «0 версій», але AutoUpdateMode або UpdateCheckMode не дорівнюють None" msgstr "Застосунок має NoSourceSince або ArchivePolicy «0 версій», але AutoUpdateMode або UpdateCheckMode не дорівнюють None"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "Застосунок має NoSourceSince або ArchivePolicy «0 версій», але AutoUpdateMode або UpdateCheckMode не дорівнюють None"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -410,11 +395,6 @@ msgstr "Категорія '%s' неприпустима"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "Категорії не встановлено" msgstr "Категорії не встановлено"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "Перевірте наявність оновлень для застосунків" msgstr "Перевірте наявність оновлень для застосунків"
@ -581,16 +561,6 @@ msgstr "Опис містить список (%s) але не маркірова
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "Довжина опису {length} перевищує ліміт {limit}" msgstr "Довжина опису {length} перевищує ліміт {limit}"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "Не додавайте 'disable:' до створених записів збірки" msgstr "Не додавайте 'disable:' до створених записів збірки"
@ -657,11 +627,6 @@ msgstr "Дубльований запис \"%s\" у конфігурації д
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "Дублікат посилання в '{field}': {url}" msgstr "Дублікат посилання в '{field}': {url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "ПОМИЛКА: Підкоманду \"server\" вилучено, використовуйте \"deploy\"!" msgstr "ПОМИЛКА: Підкоманду \"server\" вилучено, використовуйте \"deploy\"!"
@ -832,11 +797,6 @@ msgstr "Знайдено недійсні версії коду для деяк
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "Знайдено кілька файлів блоку підписів JAR у {path}" msgstr "Знайдено кілька файлів блоку підписів JAR у {path}"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "Знайдено кілька сертифікатів підписування для репозиторію."
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -901,11 +861,6 @@ msgstr "Помилка налаштування remote set-head для Git: «%s
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Скидання Git не вдалося" msgstr "Скидання Git не вдалося"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Не вдалося оновити підмодуль Git"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Не вдалося синхронізувати підмодуль Git" msgstr "Не вдалося синхронізувати підмодуль Git"
@ -1111,10 +1066,6 @@ msgstr "Зберігання невдалої збірки \"{apkfilename}\""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "Шлях до сховища ключів для ключа підпису сховища\t" msgstr "Шлях до сховища ключів для ключа підпису сховища\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1252,11 +1203,6 @@ msgstr "Теги не знайдено"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "Немає непідписаної теки — нічого виконувати" msgstr "Немає непідписаної теки — нічого виконувати"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "не знайдено відомостей про версію"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "Недійсне визначення розміру: \"{}\"" msgstr "Недійсне визначення розміру: \"{}\""
@ -1415,11 +1361,6 @@ msgstr "Надіслати журнал цього віддаленого реп
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "Оновити двійковий журнал прозорості для {url}" msgstr "Оновити двійковий журнал прозорості для {url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Помилка налаштування remote set-head для Git: «%s»"
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1453,11 +1394,6 @@ msgstr "Не вдалося прочитати packageName/versionCode/versionNa
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "Читання {apkfilename} з кешу" msgstr "Читання {apkfilename} з кешу"
#: ../fdroidserver/build.py
#, fuzzy
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr "отримати останню версію підписів з інтернету"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "Вилучення вказаних файлів" msgstr "Вилучення вказаних файлів"
@ -1708,13 +1644,6 @@ msgstr "Відбулося зіткнення keyalias ключів - припи
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "Ці застосунки, заархівовано з основного репозиторію." msgstr "Ці застосунки, заархівовано з основного репозиторію."
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"ПОМИЛКА: ця команда ніколи не повинна використовуватися для створення дзеркала f-droid.org!\n"
"Повне дзеркало f-droid.org вимагає понад 200GB."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "Цей репозиторій застосунків для використання з FDroid. Застосунки в цьому репозиторії — це або офіційні двійкові файли, побудовані розробниками оригінального застосунку, або двійкові файли, побудовані з джерела f-droid.org за допомогою інструментів з https://gitlab.com/fdroid." msgstr "Цей репозиторій застосунків для використання з FDroid. Застосунки в цьому репозиторії — це або офіційні двійкові файли, побудовані розробниками оригінального застосунку, або двійкові файли, побудовані з джерела f-droid.org за допомогою інструментів з https://gitlab.com/fdroid."
@ -1883,13 +1812,8 @@ msgstr "UpdateCheckData має використовувати URL-адресу H
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData не є дійсною URL-адресою: {url}" msgstr "UpdateCheckData не є дійсною URL-адресою: {url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr "UpdateCheckMode налаштовано, але схоже, що команду checkupdates ще не було запущено"
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
msgstr "UpdateCheckMode налаштовано, але схоже, що команду checkupdates ще не було запущено" msgstr "UpdateCheckMode налаштовано, але схоже, що команду checkupdates ще не було запущено"
@ -1920,11 +1844,6 @@ msgstr "Використання"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "Використання: %s\n" msgstr "Використання: %s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "Використовуйте /HEAD замість /master для вказання на файл типовій гілці"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "Використовуйте /HEAD замість /master для вказання на файл типовій гілці" msgstr "Використовуйте /HEAD замість /master для вказання на файл типовій гілці"
@ -1954,11 +1873,6 @@ msgstr "Використання підпису APK v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "Використання підпису APK v3" msgstr "Використання підпису APK v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "Використання підпису APK v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "Не варто перевіряти APK за допомогою jarsigner Java! Користуйтеся apksigner" msgstr "Не варто перевіряти APK за допомогою jarsigner Java! Користуйтеся apksigner"
@ -2016,10 +1930,6 @@ msgstr "Коли налаштовано для підписаних індекс
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "Під час перевірки всього репозиторію, yamllint типово вимкнено. Цей параметр змушує нехтувати yamllint." msgstr "Під час перевірки всього репозиторію, yamllint типово вимкнено. Цей параметр змушує нехтувати yamllint."
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "X.509 'Distiguished Name' використовується під час створення ключів" msgstr "X.509 'Distiguished Name' використовується під час створення ключів"
@ -2170,11 +2080,6 @@ msgstr "конфліктний субпарсер: %s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "не вдалося проаналізувати '{path}'" msgstr "не вдалося проаналізувати '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "не вдалося проаналізувати специфікацію srclib (посилання не вказано): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "не вдалося проаналізувати специфікацію srclib (посилання не вказано): '{}'" msgstr "не вдалося проаналізувати специфікацію srclib (посилання не вказано): '{}'"
@ -2350,11 +2255,6 @@ msgstr "local_copy_dir мусить бути текою, не файлом!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "дзеркало '%s' не закінчується на 'fdroid'!" msgstr "дзеркало '%s' не закінчується на 'fdroid'!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "Тепер встановіть їх у config.yml:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2512,11 +2412,6 @@ msgstr "repo_icon \"repo/icons/%s\" не існує, створення запо
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "repo_url повинен закінчуватися на /repo" msgstr "repo_url повинен закінчуватися на /repo"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "ruamel.yaml не встановлено, не вдається записати метадані." msgstr "ruamel.yaml не встановлено, не вдається записати метадані."
@ -2531,11 +2426,6 @@ msgstr "s3cmd синхронізувати індекси з {path} до {url}
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "кеш сканера пошкоджено! Ви можете очистити його за допомогою: '{clear}'" msgstr "кеш сканера пошкоджено! Ви можете очистити його за допомогою: '{clear}'"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir мусить закінчуватися на \"fdroid\", ймовірно, малося на увазі: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "спільна бібліотека" msgstr "спільна бібліотека"
@ -2741,31 +2631,6 @@ msgstr "{path} не існує! Створіть його, запустивши:
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path}: недійсний підпис \"{pattern}\". Виглядає підозріло і схоже на спробу порушення безпеки Janus exploit!" msgstr "{path}: недійсний підпис \"{pattern}\". Виглядає підозріло і схоже на спробу порушення безпеки Janus exploit!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'sdk_path' не встановлено в config.yml!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2776,11 +2641,6 @@ msgstr "{path} не має розміру!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path} понад 200 МБ, вивантажити власноруч: {url}" msgstr "{path} понад 200 МБ, вивантажити власноруч: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -28,22 +28,20 @@
# Max Xie <monyxie@gmail.com>, 2023. # Max Xie <monyxie@gmail.com>, 2023.
# Kingo Bingo <bingokingosoft@gmail.com>, 2023. # Kingo Bingo <bingokingosoft@gmail.com>, 2023.
# zhiqi <lzqlzq21@gmail.com>, 2023. # zhiqi <lzqlzq21@gmail.com>, 2023.
# David Jiang <david.jiang2024@gmail.com>, 2023.
# ALoLo_527 <ALoLo@users.noreply.hosted.weblate.org>, 2024.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-13 17:01+0000\n" "PO-Revision-Date: 2023-09-11 17:39+0000\n"
"Last-Translator: ALoLo_527 <ALoLo@users.noreply.hosted.weblate.org>\n" "Last-Translator: Xiang Heng Wei <yylteam@hotmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/>\n" "Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hans/>\n"
"Language: zh_Hans\n" "Language: zh_Hans\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 5.0.1-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -122,11 +120,6 @@ msgstr[0] "%(option)s 选项需要 %(number)d 个参数"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s错误%(message)s\n" msgstr "%(prog)s错误%(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -246,11 +239,6 @@ msgstr "路径缺少 /issues ( 译者注: 此处仅支持 github 或 gitlab 之
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "需要有一个链接作为参数!" msgstr "需要有一个链接作为参数!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "在 {path} 中找不到签名证书"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "使用 GnuPG 为存储库之软件包添加 PGP 签名" msgstr "使用 GnuPG 为存储库之软件包添加 PGP 签名"
@ -328,11 +316,6 @@ msgstr "应用程序具有二进制文件但没有相应的AllowedAPKSigningK
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "应用的 NoSourceSince 或 ArchivePolicy 为 “0 versions” 但 AutoUpdateMode 或 UpdateCheckMode 不是 None" msgstr "应用的 NoSourceSince 或 ArchivePolicy 为 “0 versions” 但 AutoUpdateMode 或 UpdateCheckMode 不是 None"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "应用的 NoSourceSince 或 ArchivePolicy 为 “0 versions” 但 AutoUpdateMode 或 UpdateCheckMode 不是 None"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -428,11 +411,6 @@ msgstr "类别 '%s' 无效"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "没有设置类别" msgstr "没有设置类别"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "检查应用的更新" msgstr "检查应用的更新"
@ -599,16 +577,6 @@ msgstr "简介中带有列表(%s但它既不是子弹*)形列表也
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "简介长度 {length} 超过 {limit} 字限制" msgstr "简介长度 {length} 超过 {limit} 字限制"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
msgstr "不要给生成的构建项添加 'disable:'" msgstr "不要给生成的构建项添加 'disable:'"
@ -675,11 +643,6 @@ msgstr "镜像配置中的重复条目“%s”"
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "“{field}”中有重复的链接:{url}" msgstr "“{field}”中有重复的链接:{url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
msgstr "错误:\"server\" 子命令已被删除,请使用 \"deploy\"" msgstr "错误:\"server\" 子命令已被删除,请使用 \"deploy\""
@ -850,11 +813,6 @@ msgstr "发现某些应用的版本代码无效"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "在{path}中发现多个JAR签名块文件" msgstr "在{path}中发现多个JAR签名块文件"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "发现存储库的多个签名证书。"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -919,11 +877,6 @@ msgstr "Git remote set-head 失败:\"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Git reset 失败" msgstr "Git reset 失败"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Git 子模块更新失败"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Git 子模块同步失败" msgstr "Git 子模块同步失败"
@ -1129,10 +1082,6 @@ msgstr "保持失败的生成“{apkfilename}”"
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "签名密钥的密钥库:\t" msgstr "签名密钥的密钥库:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1270,11 +1219,6 @@ msgstr "未找到标签"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "没有未签名的目录 - 无操作" msgstr "没有未签名的目录 - 无操作"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "没有找到版本信息"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
msgstr "不是有效的大小定义:“{}”" msgstr "不是有效的大小定义:“{}”"
@ -1433,11 +1377,6 @@ msgstr "拖送日志至 git 远程资源库"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "正推送二进制文件透明日志到{url}" msgstr "正推送二进制文件透明日志到{url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Git remote set-head 失败:\"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1471,10 +1410,6 @@ msgstr "读取 packageName/versionCode/versionName 失败APK 无效:'{apkfi
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "从缓存读取 {apkfilename}" msgstr "从缓存读取 {apkfilename}"
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "删除指定文件" msgstr "删除指定文件"
@ -1723,13 +1658,6 @@ msgstr "存在密钥别名冲突 - 发布已停止"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "这些是已从主存储库存档的应用。" msgstr "这些是已从主存储库存档的应用。"
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"错误:请不要使用此命令来镜像 f-droid.org\n"
"对 f-droid.org 进行完整镜像至少需要超过 200GB 的储存空间。"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
msgstr "这是一个与F-Droid一起使用的应用的存储库。这个存储库中的应用要么是原应用开发者构建的官方二进制文件要么是 f-droid.org 的管理员使用 https://gitlab.com/fdroid 上的工具从源代码构建而来的二进制文件。" msgstr "这是一个与F-Droid一起使用的应用的存储库。这个存储库中的应用要么是原应用开发者构建的官方二进制文件要么是 f-droid.org 的管理员使用 https://gitlab.com/fdroid 上的工具从源代码构建而来的二进制文件。"
@ -1898,10 +1826,6 @@ msgstr "UpdateCheckData必须使用HTTPS URL:{url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData 不是有效的网址:{url}" msgstr "UpdateCheckData 不是有效的网址:{url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1914,12 +1838,12 @@ msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Uploading {apkfilename} to androidobservatory.org" msgid "Uploading {apkfilename} to androidobservatory.org"
msgstr "上传 {apkfilename} 到 androidobservatory.org" msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Uploading {apkfilename} to virustotal" msgid "Uploading {apkfilename} to virustotal"
msgstr "上传 {apkfilename} 到 virustotal" msgstr ""
#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py
#: /usr/lib/python3.7/optparse.py /usr/lib/python3.9/optparse.py #: /usr/lib/python3.7/optparse.py /usr/lib/python3.9/optparse.py
@ -1934,10 +1858,6 @@ msgstr "使用"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "用法:%s\n" msgstr "用法:%s\n"
#: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "" msgstr ""
@ -1961,16 +1881,11 @@ msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using APK Signature v2" msgid "Using APK Signature v2"
msgstr "使用 APK 签名 v2" msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "使用 APK 签名 v3" msgstr ""
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "使用 APK 签名 v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
@ -1979,7 +1894,7 @@ msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, python-brace-format #, python-brace-format
msgid "Using androguard from \"{path}\"" msgid "Using androguard from \"{path}\""
msgstr "使用 {path} 中的 androguard" msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
@ -2029,10 +1944,6 @@ msgstr "如果已配置为使用签名索引,该阶段仅创建未签名索引
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "" msgstr ""
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "生成密钥时使用了X.509 ‘可识别名’" msgstr "生成密钥时使用了X.509 ‘可识别名’"
@ -2181,10 +2092,6 @@ msgstr "有冲突的子解析器:%s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "无法解析 '{path}'" msgstr "无法解析 '{path}'"
#: ../fdroidserver/common.py
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
msgstr "" msgstr ""
@ -2358,11 +2265,6 @@ msgstr "local_copy_dir必须是目录不能是文件"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "" msgstr ""
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "现在在 config.yml 中设置这些:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2520,11 +2422,6 @@ msgstr ""
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
msgstr "" msgstr ""
@ -2539,11 +2436,6 @@ msgstr ""
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir未以“ fdroid”结尾也许你指的是“ {path}”"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
msgid "shared library" msgid "shared library"
msgstr "" msgstr ""
@ -2669,12 +2561,12 @@ msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{appid} from {path} is not a valid Android application ID!" msgid "{appid} from {path} is not a valid Android application ID!"
msgstr "{appid}来自{path}不是一个有效的Android应用ID" msgstr ""
#: ../fdroidserver/metadata.py ../fdroidserver/update.py #: ../fdroidserver/metadata.py ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{appid} from {path} is not a valid Java Package Name!" msgid "{appid} from {path} is not a valid Java Package Name!"
msgstr "{appid}来自{path}不是一个有效的Java安装包名称" msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
@ -2684,7 +2576,7 @@ msgstr ""
#: ../fdroidserver/mirror.py #: ../fdroidserver/mirror.py
#, python-brace-format #, python-brace-format
msgid "{appid} is missing {name}" msgid "{appid} is missing {name}"
msgstr "{appid}缺失了{name}" msgstr ""
#. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname #. Translators: https://developer.android.com/guide/topics/manifest/manifest-element.html#vname
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
@ -2700,12 +2592,12 @@ msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "{appid}: {field} must be a '{type}', but it is a '{fieldtype}!'" msgid "{appid}: {field} must be a '{type}', but it is a '{fieldtype}!'"
msgstr "{appid}{field}必须为‘{type}’,但它是‘{fieldtype}" msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "{appid}: {field} must be a '{type}', but it is a '{fieldtype}'!" msgid "{appid}: {field} must be a '{type}', but it is a '{fieldtype}'!"
msgstr "{appid}{field}必须为‘{type}’,但它是‘{fieldtype}" msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
@ -2747,44 +2639,14 @@ msgstr "{path} 不存在!通过运行以下命令创建它:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "未在 config.yml 中设置 'sdk_path'!"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
msgstr "{path}的大小为零!" msgstr ""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "{path}的大小超过200MB请手动上传{url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr "" msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
@ -2795,12 +2657,12 @@ msgstr "{path}{error}"
#: ../fdroidserver/mirror.py #: ../fdroidserver/mirror.py
#, python-brace-format #, python-brace-format
msgid "{url} does not end with \"fdroid\", check the URL path!" msgid "{url} does not end with \"fdroid\", check the URL path!"
msgstr "{url}不是以“fdroid”结尾的请检查链接路径" msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
#, python-brace-format #, python-brace-format
msgid "{url} does not start with \"http\"!" msgid "{url} does not start with \"http\"!"
msgstr "{url}不是以“http”为开头" msgstr ""
#: ../fdroidserver/build.py #: ../fdroidserver/build.py
msgid "{} build failed" msgid "{} build failed"

View File

@ -1,7 +1,7 @@
# SOME DESCRIPTIVE TITLE. # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc. # Copyright (C) YEAR Free Software Foundation, Inc.
# Jeff Huang <s8321414@gmail.com>, 2020. # Jeff Huang <s8321414@gmail.com>, 2020.
# Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021, 2022, 2024. # Hans-Christoph Steiner <hans@guardianproject.info>, 2020, 2021, 2022.
# NightFeather <ss900328@gmail.com>, 2020. # NightFeather <ss900328@gmail.com>, 2020.
# ifurther <i.further.5.4@gmail.com>, 2021. # ifurther <i.further.5.4@gmail.com>, 2021.
# Stiffen <wchen01@fisher.edu>, 2021. # Stiffen <wchen01@fisher.edu>, 2021.
@ -9,8 +9,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: fdroidserver 0.9\n" "Project-Id-Version: fdroidserver 0.9\n"
"Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n" "Report-Msgid-Bugs-To: https://gitlab.com/fdroid/fdroidserver/issues\n"
"POT-Creation-Date: 2024-05-13 13:50+0200\n" "POT-Creation-Date: 2023-05-24 22:18+0200\n"
"PO-Revision-Date: 2024-04-10 13:33+0000\n" "PO-Revision-Date: 2022-09-06 14:30+0000\n"
"Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n" "Last-Translator: Hans-Christoph Steiner <hans@guardianproject.info>\n"
"Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/>\n" "Language-Team: Chinese (Traditional) <https://hosted.weblate.org/projects/f-droid/fdroidserver/zh_Hant/>\n"
"Language: zh_Hant\n" "Language: zh_Hant\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 5.5-dev\n" "X-Generator: Weblate 4.14.1-dev\n"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
msgid "" msgid ""
@ -73,9 +73,9 @@ msgid "\"{path}\" is not a supported file format (use: metadata/*.yml)"
msgstr "\"{path}\" 不是可接受的格式,轉換成: metadata/*.yml" msgstr "\"{path}\" 不是可接受的格式,轉換成: metadata/*.yml"
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, fuzzy, python-brace-format
msgid "\"{path}\" is signed by a key that is not allowed:" msgid "\"{path}\" is signed by a key that is not allowed:"
msgstr "" msgstr "有 \"{path}\" 存在,但是沒有安裝 s3cmd"
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
#, python-brace-format #, python-brace-format
@ -97,11 +97,6 @@ msgstr[0] "%(option)s 的選項需要 %(number)d 參數"
msgid "%(prog)s: error: %(message)s\n" msgid "%(prog)s: error: %(message)s\n"
msgstr "%(prog)s: 錯誤: %(message)s\n" msgstr "%(prog)s: 錯誤: %(message)s\n"
#: ../fdroidserver/publish.py
#, python-format
msgid "%d APKs failed to be signed or verified!"
msgstr ""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-format #, python-format
msgid "%d problems found" msgid "%d problems found"
@ -200,9 +195,9 @@ msgid "'{value}' is not a valid {field} in {appid}. Regex pattern: {pattern}"
msgstr "{appid} 的 {value}' 為無效 {field}。正規表遠格式:{pattern}" msgstr "{appid} 的 {value}' 為無效 {field}。正規表遠格式:{pattern}"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, fuzzy, python-brace-format
msgid "'{value}' is not a valid {field}, should be {pattern}" msgid "'{value}' is not a valid {field}, should be {pattern}"
msgstr "" msgstr "{appid} 的 {value}' 為無效 {field}。正規表遠格式:{pattern}"
#: ../fdroidserver/checkupdates.py #: ../fdroidserver/checkupdates.py
#, python-brace-format #, python-brace-format
@ -223,11 +218,6 @@ msgstr "/issues 有遺漏"
msgid "A URL is required as an argument!" msgid "A URL is required as an argument!"
msgstr "需要 URL 作為參數!" msgstr "需要 URL 作為參數!"
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "APK signatures have different certificates in {path}:"
msgstr "{path} 找不到簽署證書"
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Add PGP signatures using GnuPG for packages in repo" msgid "Add PGP signatures using GnuPG for packages in repo"
msgstr "在軟體庫中加入使用 GnuPG 套件包的 gpg 簽署" msgstr "在軟體庫中加入使用 GnuPG 套件包的 gpg 簽署"
@ -308,10 +298,6 @@ msgstr ""
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None" msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" but AutoUpdateMode or UpdateCheckMode are not None"
msgstr "" msgstr ""
#: ../fdroidserver/lint.py
msgid "App has NoSourceSince or ArchivePolicy \"0 versions\" or 0 but AutoUpdateMode or UpdateCheckMode are not None"
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, python-brace-format #, python-brace-format
msgid "App is in '{repo}' but has a link to {url}" msgid "App is in '{repo}' but has a link to {url}"
@ -407,11 +393,6 @@ msgstr "'%s' 類別無效"
msgid "Categories are not set" msgid "Categories are not set"
msgstr "類別未設定" msgstr "類別未設定"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "Category \"{category}\" defined but not used for any apps!"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
msgid "Check for updates to applications" msgid "Check for updates to applications"
msgstr "檢查應用程式更新" msgstr "檢查應用程式更新"
@ -583,16 +564,6 @@ msgstr "描述中有一個列表 (%s) 但它並未被編排 (*) 或作編號 (#)
msgid "Description of length {length} is over the {limit} char limit" msgid "Description of length {length} is over the {limit} char limit"
msgstr "描述的長度 {length} 已超過 {limit} 個字符限制" msgstr "描述的長度 {length} 已超過 {limit} 個字符限制"
#: ../fdroidserver/common.py
#, python-brace-format
msgid "Did you mean config/{name}.yml?"
msgstr ""
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "Did you mean {code}?"
msgstr ""
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
#, fuzzy #, fuzzy
msgid "Do not add 'disable:' to the generated build entries" msgid "Do not add 'disable:' to the generated build entries"
@ -660,11 +631,6 @@ msgstr ""
msgid "Duplicate link in '{field}': {url}" msgid "Duplicate link in '{field}': {url}"
msgstr "'{field}' 有重複的連結:{url}" msgstr "'{field}' 有重複的連結:{url}"
#: ../fdroidserver/common.py
#, python-format
msgid "ERROR: %(message)s"
msgstr ""
#: ../fdroidserver/__main__.py #: ../fdroidserver/__main__.py
#, fuzzy #, fuzzy
msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!" msgid "ERROR: The \"server\" subcommand has been removed, use \"deploy\"!"
@ -784,7 +750,7 @@ msgstr "抓取 '{apkfilename}' 的簽署資料 -> '{sigdir}'"
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "File disappeared while processing it: {path}" msgid "File disappeared while processing it: {path}"
msgstr "檔案 「{path}」在處理過程中消失了" msgstr "檔案 「路徑: {path}」在處理過程中消失了"
#: ../fdroidserver/build.py ../fdroidserver/install.py #: ../fdroidserver/build.py ../fdroidserver/install.py
#: ../fdroidserver/rewritemeta.py ../fdroidserver/scanner.py #: ../fdroidserver/rewritemeta.py ../fdroidserver/scanner.py
@ -839,11 +805,6 @@ msgstr "有些應用的版本代號無效"
msgid "Found multiple JAR Signature Block Files in {path}" msgid "Found multiple JAR Signature Block Files in {path}"
msgstr "{path} 找到多筆簽名證書" msgstr "{path} 找到多筆簽名證書"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Found multiple Signer Certificates!"
msgstr "軟體庫找到多份簽署證書。"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-brace-format #, python-brace-format
msgid "Found multiple metadata files for {appid}" msgid "Found multiple metadata files for {appid}"
@ -863,14 +824,14 @@ msgid "Found non-file at %s"
msgstr "%s 中找到 non-file" msgstr "%s 中找到 non-file"
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, fuzzy, python-brace-format
msgid "Found {apkfilename} at {url}" msgid "Found {apkfilename} at {url}"
msgstr "" msgstr "在鏈接 {url} 找到了Android軟體程式包 {apkfilename} 。"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Found {count} problems in {filename}" msgid "Found {count} problems in {filename}"
msgstr "在 {filename} 發現{count} 個問題" msgstr "掃瞄器在 {appid} 發現{count} 個問題:"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, python-brace-format
@ -909,11 +870,6 @@ msgstr "Git 遠端 set-head 失敗: \"%s\""
msgid "Git reset failed" msgid "Git reset failed"
msgstr "Git 重置失敗" msgstr "Git 重置失敗"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Git submodule deinit failed"
msgstr "Git 子模組更新失敗"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Git submodule sync failed" msgid "Git submodule sync failed"
msgstr "Git 子模組同步失敗" msgstr "Git 子模組同步失敗"
@ -929,12 +885,12 @@ msgstr "HTTPS 必須與 Subversion 網址一起使用!"
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, fuzzy #, fuzzy
msgid "If a git mirror gets to big, allow the archive to be deleted" msgid "If a git mirror gets to big, allow the archive to be deleted"
msgstr "如果一個 git mirror 變得太大, 允許刪除該 git mirror 的檔案" msgstr "如果一個 git mirror 變得太大, 允許刪除該 git mirror 的檔案"
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "If this upload fails, try manually uploading to {url}" msgid "If this upload fails, try manually uploading to {url}"
msgstr "如果本次上傳失敗, 嘗試手動上傳至 {url}" msgstr "如果本次上傳失敗, 嘗試手動上傳至 {url}"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
@ -942,9 +898,9 @@ msgid "Ignoring '{field}' in '{metapath}' metadata because it is deprecated."
msgstr "忽略 '{metapath}' 中的 '{field}' 因為它已經過時了。" msgstr "忽略 '{metapath}' 中的 '{field}' 因為它已經過時了。"
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-format #, fuzzy, python-format
msgid "Ignoring FUNDING.yml entry longer than 2048: %s" msgid "Ignoring FUNDING.yml entry longer than 2048: %s"
msgstr "忽略文檔 FUNDING.yml 文檔大小超過 2048: %s" msgstr "忽略文檔 FUNDING.yml 文檔大小超過 2048: %s"
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-format #, python-format
@ -967,17 +923,17 @@ msgstr "包含 APKs 其簽名為有弱點的演算法,如 MD5"
#: ../fdroidserver/mirror.py #: ../fdroidserver/mirror.py
#, fuzzy #, fuzzy
msgid "Include the PGP signature .asc files in the mirror" msgid "Include the PGP signature .asc files in the mirror"
msgstr "在鏡像中加入 PGP 簽名和 .asc 文檔" msgstr "在鏡像中加入 PGP 簽名和 .asc 文檔"
#: ../fdroidserver/mirror.py #: ../fdroidserver/mirror.py
#, fuzzy #, fuzzy
msgid "Include the build logs in the mirror" msgid "Include the build logs in the mirror"
msgstr "在鏡像中加入編譯紀錄" msgstr "在鏡像中加入編譯紀錄"
#: ../fdroidserver/mirror.py #: ../fdroidserver/mirror.py
#, fuzzy #, fuzzy
msgid "Include the source tarballs in the mirror" msgid "Include the source tarballs in the mirror"
msgstr "在鏡像中加入軟體的源代碼包" msgstr "在鏡像中加入軟體的源代碼包"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-format #, python-format
@ -1037,12 +993,12 @@ msgstr "無效的 VercodeOperation{field}"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Invalid VercodeOperation: {invalid_ops}" msgid "Invalid VercodeOperation: {invalid_ops}"
msgstr "無效的 VercodeOperation{invalid_ops}" msgstr "無效的 VercodeOperation{field}"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Invalid application ID {appid}" msgid "Invalid application ID {appid}"
msgstr "無效的 application ID {appid}" msgstr "無效的 application ID {appid}"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, python-format #, python-format
@ -1071,17 +1027,17 @@ msgstr "無效的重新導向到非 HTTPS{before}->{after}。 "
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Invalid scrlib metadata: '{file}' does not exist" msgid "Invalid scrlib metadata: '{file}' does not exist"
msgstr "無效的 scrlib metadata: 檔案 '{file}' 不存在" msgstr "無效的 scrlib metadata: 檔案 '{file}' 不存在"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Invalid srclib metadata: could not parse '{file}'" msgid "Invalid srclib metadata: could not parse '{file}'"
msgstr "無效的 scrlib metadata: 無法解析檔案 '{file}'" msgstr "無效的 scrlib metadata: 無法解析檔案 '{file}'"
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Invalid srclib metadata: unknown key '{key}' in '{file}'" msgid "Invalid srclib metadata: unknown key '{key}' in '{file}'"
msgstr "無效的 scrlib metadata: 檔案 '{file}' 裡有未知的密鑰 '{key}'" msgstr "無效的 scrlib metadata: 檔案 '{file}' 裡有未知的密鑰 '{key}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, python-brace-format #, python-brace-format
@ -1125,10 +1081,6 @@ msgstr "讀取 minSdkVersion 失敗:\"{apkfilename}\""
msgid "Keystore for signing key:\t" msgid "Keystore for signing key:\t"
msgstr "金鑰庫的簽署金鑰:\t" msgstr "金鑰庫的簽署金鑰:\t"
#: ../fdroidserver/lint.py
msgid "Known debug key is used in AllowedAPKSigningKeys: "
msgstr ""
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'" msgid "Last used commit '{commit}' looks like a tag, but UpdateCheckMode is '{ucm}'"
@ -1215,7 +1167,7 @@ msgstr "查無資訊。"
#: ../fdroidserver/checkupdates.py #: ../fdroidserver/checkupdates.py
#, fuzzy #, fuzzy
msgid "No matching tags found" msgid "No matching tags found"
msgstr "查無資訊" msgstr "查無資訊"
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
@ -1272,11 +1224,6 @@ msgstr "查無附加的設備"
msgid "No unsigned directory - nothing to do" msgid "No unsigned directory - nothing to do"
msgstr "無未簽署目錄 - 無須採取行動" msgstr "無未簽署目錄 - 無須採取行動"
#: ../fdroidserver/__main__.py
#, fuzzy
msgid "No version information could be found."
msgstr "未發現版本資訊"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, fuzzy #, fuzzy
msgid "Not a valid size definition: \"{}\"" msgid "Not a valid size definition: \"{}\""
@ -1351,7 +1298,7 @@ msgstr "輸出 JSON 到 stdout 。"
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, fuzzy #, fuzzy
msgid "Outputting JSON" msgid "Outputting JSON"
msgstr "正在導出 JSON 中" msgstr "正在導出 JSON 中 ..."
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
msgid "Overall license of the project." msgid "Overall license of the project."
@ -1441,11 +1388,6 @@ msgstr "將日誌推送到 git 遠端軟體庫"
msgid "Pushing binary transparency log to {url}" msgid "Pushing binary transparency log to {url}"
msgstr "推二進制的透明日誌到{url}" msgstr "推二進制的透明日誌到{url}"
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "Pushing to remote server failed!"
msgstr "Git 遠端 set-head 失敗: \"%s\""
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, python-brace-format #, python-brace-format
msgid "Pushing to {url}" msgid "Pushing to {url}"
@ -1479,10 +1421,6 @@ msgstr "讀取套件名稱/版本代碼/版本名稱 失敗APK 無效:'{apk
msgid "Reading {apkfilename} from cache" msgid "Reading {apkfilename} from cache"
msgstr "從緩存讀取 {apkfilename}" msgstr "從緩存讀取 {apkfilename}"
#: ../fdroidserver/build.py
msgid "Refresh and cache scanner rules and signatures from the network"
msgstr ""
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Removing specified files" msgid "Removing specified files"
msgstr "移除指定檔案" msgstr "移除指定檔案"
@ -1560,7 +1498,7 @@ msgstr "掃描套件包的原始碼"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Scanner found {count} problems in {apk}" msgid "Scanner found {count} problems in {apk}"
msgstr "掃瞄器在 {apk} 發現{count} 個問題" msgstr "掃瞄器在 {appid} 發現{count} 個問題:"
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, python-brace-format #, python-brace-format
@ -1594,7 +1532,7 @@ msgstr "設定時鐘到那時使用:"
#: ../fdroidserver/nightly.py #: ../fdroidserver/nightly.py
#, fuzzy #, fuzzy
msgid "Set maximum releases in repo before older ones are archived" msgid "Set maximum releases in repo before older ones are archived"
msgstr "先設置軟體庫的軟體最大釋出數, 再將舊軟體歸檔" msgstr "先設置軟體庫的軟體最大釋出數, 再將舊軟體歸檔"
#: ../fdroidserver/build.py #: ../fdroidserver/build.py
#, python-brace-format #, python-brace-format
@ -1735,13 +1673,6 @@ msgstr "發生主要別名衝突 - 發佈中止"
msgid "These are the apps that have been archived from the main repo." msgid "These are the apps that have been archived from the main repo."
msgstr "這些是從主軟體庫中歸檔的軟體。" msgstr "這些是從主軟體庫中歸檔的軟體。"
#: ../fdroidserver/mirror.py
#, fuzzy
msgid "This command should never be used to mirror f-droid.org! A full copy requires more than 600GB."
msgstr ""
"錯誤:此命令絕不該用於鏡像 f-droid.org\n"
"完整的 f-droid.org 鏡像需要超過 200GB。"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, fuzzy #, fuzzy
msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid." msgid "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/fdroid."
@ -1790,7 +1721,7 @@ msgstr "這個許可證標籤不符合預期 \"{}\" 只能使用 https://spdx
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
#, fuzzy #, fuzzy
msgid "Unexpected license tag \"{}\"! Only use license tags configured in your config file" msgid "Unexpected license tag \"{}\"! Only use license tags configured in your config file"
msgstr "這個許可證標籤不符合預期 \"{}\" 只能使用你的配置文檔裡面配置好的許可證標籤啦" msgstr "這個許可證標籤不符合預期 \"{}\" 只能使用你的配置文檔裡面配置好的許可證標籤啦"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, python-brace-format #, python-brace-format
@ -1907,10 +1838,6 @@ msgstr "UpdateCheckData 必須使用 HTTPS URL{url}"
msgid "UpdateCheckData not a valid URL: {url}" msgid "UpdateCheckData not a valid URL: {url}"
msgstr "UpdateCheckData 不是有效的 URL{url}" msgstr "UpdateCheckData 不是有效的 URL{url}"
#: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks like checkupdates hasn't been run yet."
msgstr ""
#. Translators: https://developer.android.com/studio/build/application-id #. Translators: https://developer.android.com/studio/build/application-id
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet" msgid "UpdateCheckMode is set but it looks likecheckupdates hasn't been run yet"
@ -1924,12 +1851,12 @@ msgstr "UpdateCheckName 已經被設定成已知的 application id - 它可以
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Uploading {apkfilename} to androidobservatory.org" msgid "Uploading {apkfilename} to androidobservatory.org"
msgstr "正在將軟體檔案 {apkfilename} 上傳到 androidobservatory.org" msgstr "正在將軟體檔案 {apkfilename} 上傳到 androidobservatory.org"
#: ../fdroidserver/deploy.py #: ../fdroidserver/deploy.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "Uploading {apkfilename} to virustotal" msgid "Uploading {apkfilename} to virustotal"
msgstr "正在將軟體檔案 {apkfilename} 上傳到 virustotal" msgstr "正在將軟體檔案 {apkfilename} 上傳到 virustotal"
#: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py #: /usr/lib/python3.5/optparse.py /usr/lib/python3.6/optparse.py
#: /usr/lib/python3.7/optparse.py /usr/lib/python3.9/optparse.py #: /usr/lib/python3.7/optparse.py /usr/lib/python3.9/optparse.py
@ -1944,11 +1871,6 @@ msgstr "使用方法"
msgid "Usage: %s\n" msgid "Usage: %s\n"
msgstr "使用方法:%s\n" msgstr "使用方法:%s\n"
#: ../fdroidserver/lint.py
#, fuzzy
msgid "Use /HEAD instead of /master or /main to point at a file in the default branch"
msgstr "使用 /HEAD 取代 /master 來指向默認分支的一個檔案"
#: ../fdroidserver/lint.py #: ../fdroidserver/lint.py
msgid "Use /HEAD instead of /master to point at a file in the default branch" msgid "Use /HEAD instead of /master to point at a file in the default branch"
msgstr "使用 /HEAD 取代 /master 來指向默認分支的一個檔案" msgstr "使用 /HEAD 取代 /master 來指向默認分支的一個檔案"
@ -1980,11 +1902,6 @@ msgstr "使用 APK Signature v2"
msgid "Using APK Signature v3" msgid "Using APK Signature v3"
msgstr "使用 APK Signature v3" msgstr "使用 APK Signature v3"
#: ../fdroidserver/common.py
#, fuzzy
msgid "Using JAR Signature"
msgstr "使用 APK Signature v2"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner" msgid "Using Java's jarsigner, not recommended for verifying APKs! Use apksigner"
msgstr "使用 Java 的 jarsigner這並不建議用於驗證 APK使用 apksigner" msgstr "使用 Java 的 jarsigner這並不建議用於驗證 APK使用 apksigner"
@ -2043,10 +1960,6 @@ msgstr "當已組態為簽名的索引時,只能在此階段建立無簽名的
msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless." msgid "When linting the entire repository yamllint is disabled by default. This option forces yamllint regardless."
msgstr "在默認情況下, 檢查整個軟體庫中的可疑代碼時不會檢查 yaml 檔案 yamllint 。 使用本選項將會忽略默認選項,在檢查整個軟體庫中的可疑代碼時強制檢查 yaml 檔案 yamllint 。" msgstr "在默認情況下, 檢查整個軟體庫中的可疑代碼時不會檢查 yaml 檔案 yamllint 。 使用本選項將會忽略默認選項,在檢查整個軟體庫中的可疑代碼時強制檢查 yaml 檔案 yamllint 。"
#: ../fdroidserver/publish.py
msgid "When signing or verifying fails, exit with an error code."
msgstr ""
#: ../fdroidserver/init.py #: ../fdroidserver/init.py
msgid "X.509 'Distinguished Name' used when generating keys" msgid "X.509 'Distinguished Name' used when generating keys"
msgstr "產生金鑰時使用 X.509 的'專有名稱'" msgstr "產生金鑰時使用 X.509 的'專有名稱'"
@ -2203,11 +2116,6 @@ msgstr "相衝突的選項字串:%s"
msgid "could not parse '{path}'" msgid "could not parse '{path}'"
msgstr "無法解析 '{path}'" msgstr "無法解析 '{path}'"
#: ../fdroidserver/common.py
#, fuzzy
msgid "could not parse srclib spec (no name specified): '{}'"
msgstr "無法解析 scrlib spec (沒有指定參考文獻): '{}'"
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, fuzzy #, fuzzy
msgid "could not parse srclib spec (no ref specified): '{}'" msgid "could not parse srclib spec (no ref specified): '{}'"
@ -2387,11 +2295,6 @@ msgstr "local_copy_dir 為目錄,不是檔案!"
msgid "mirror '%s' does not end with 'fdroid'!" msgid "mirror '%s' does not end with 'fdroid'!"
msgstr "鏡像 '%s' 並不是以 'fdroid' 作結尾!" msgstr "鏡像 '%s' 並不是以 'fdroid' 作結尾!"
#: ../fdroidserver/index.py
#, fuzzy, python-brace-format
msgid "mirrors set twice, in config.yml and {path}!"
msgstr "現在設定這些在 config.yml 中:"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
#: /usr/lib/python3.11/argparse.py #: /usr/lib/python3.11/argparse.py
@ -2426,7 +2329,7 @@ msgstr "未發現版本資訊!"
#: ../fdroidserver/checkupdates.py #: ../fdroidserver/checkupdates.py
#, fuzzy #, fuzzy
msgid "no version information found" msgid "no version information found"
msgstr "未發現版本資訊" msgstr "未發現版本資訊"
#: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py #: /usr/lib/python3.5/argparse.py /usr/lib/python3.6/argparse.py
#: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py #: /usr/lib/python3.7/argparse.py /usr/lib/python3.9/argparse.py
@ -2551,11 +2454,6 @@ msgstr "軟體庫圖標 repo_icon\"repo/icons/%s\" 不存在, 正在生
msgid "repo_url needs to end with /repo" msgid "repo_url needs to end with /repo"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "rsync is missing or broken: {error}"
msgstr ""
#: ../fdroidserver/metadata.py #: ../fdroidserver/metadata.py
#, fuzzy #, fuzzy
msgid "ruamel.yaml not installed, can not write metadata." msgid "ruamel.yaml not installed, can not write metadata."
@ -2571,11 +2469,6 @@ msgstr "s3cmd 同步索引 {path} 到 {url} 並刪除"
msgid "scanner cache is malformed! You can clear it with: '{clear}'" msgid "scanner cache is malformed! You can clear it with: '{clear}'"
msgstr "" msgstr ""
#: ../fdroidserver/deploy.py
#, fuzzy
msgid "serverwebroot: path does not end with \"fdroid\", perhaps you meant one of these:"
msgstr "local_copy_dir 未以 \"fdroid\"結尾,也許你指示的是: \"{path}\""
#: ../fdroidserver/scanner.py #: ../fdroidserver/scanner.py
#, fuzzy #, fuzzy
msgid "shared library" msgid "shared library"
@ -2765,7 +2658,7 @@ msgstr "{name} \"{section}/icons/{path}\" 不存在! 請檢查 \"config.yml\"."
#: ../fdroidserver/common.py #: ../fdroidserver/common.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "{oldfile} is deprecated, use {newfile}" msgid "{oldfile} is deprecated, use {newfile}"
msgstr "檔案 {oldfile} 已經過時了, 請使用檔案 {newfile}" msgstr "檔案 {oldfile} 已經過時了, 請使用檔案 {newfile}"
#: ../fdroidserver/import_subcommand.py #: ../fdroidserver/import_subcommand.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
@ -2782,31 +2675,6 @@ msgstr "\"{path}\" 不存在!經由執行建立它:"
msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!" msgid "{path} has bad file signature \"{pattern}\", possible Janus exploit!"
msgstr "{path} 有不正確的檔案簽章「{pattern}」,可能是 Janus 漏洞!" msgstr "{path} 有不正確的檔案簽章「{pattern}」,可能是 Janus 漏洞!"
#: ../fdroidserver/deploy.py
#, python-brace-format
msgid "{path} has been flagged by virustotal {count} times:"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not \"key: value\" dict, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, fuzzy, python-brace-format
msgid "{path} is not a standard config file!"
msgstr "'config.yml' 未設定 'sdk_path'"
#: ../fdroidserver/index.py
#, python-brace-format
msgid "{path} is not list, but a {datatype}!"
msgstr ""
#: ../fdroidserver/common.py
#, python-brace-format
msgid "{path} is not {expected_type}, but a {datatype}!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, python-brace-format #, python-brace-format
msgid "{path} is zero size!" msgid "{path} is zero size!"
@ -2817,11 +2685,6 @@ msgstr "{path} 為零尺寸!"
msgid "{path} more than 200MB, manually upload: {url}" msgid "{path} more than 200MB, manually upload: {url}"
msgstr "檔案 {path} 大於 200MB 手動上傳: {url}" msgstr "檔案 {path} 大於 200MB 手動上傳: {url}"
#: ../fdroidserver/lint.py
#, python-brace-format
msgid "{path}: \"{code}\" is not a valid ISO_3166-1 alpha-2 country code!"
msgstr ""
#: ../fdroidserver/update.py #: ../fdroidserver/update.py
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
msgid "{path}: {error}" msgid "{path}: {error}"

View File

@ -47,22 +47,35 @@ logging.basicConfig(format=logformat, level=loglevel)
tail = None tail = None
BASEBOX_DEFAULT = 'debian/bookworm64' BASEBOX_DEFAULT = 'fdroid/bullseye64'
BASEBOX_VERSION_DEFAULT = "12.20231211.1" BASEBOX_VERSION_DEFAULT = "11.20221010.1"
BASEBOX_CHECKSUMS = { BASEBOX_CHECKSUMS = {
"12.20231211.1": { "11.20221010.1": {
"libvirt": { "libvirt": {
"box.img": "80b048312c423b7fbbbac934c348f9a29bdf2f98fae96dd13b3af70ddfe7f12a", "box.img": "c2114aa276c176fa65b8072f5dcd1e8a6ab9f7d15fd5da791727a0164fd43254",
"Vagrantfile": "f9c6fcbb47a4d0d33eb066859c8e87efd642287a638bd7da69a9e7a6f25fec47", "Vagrantfile": "f9c6fcbb47a4d0d33eb066859c8e87efd642287a638bd7da69a9e7a6f25fec47",
"metadata.json": "9d717678c19bb81d077e4e7eeb3602c168b6568cc38fee8fd3aa9d8f3cfe639b", "metadata.json": "42b96a01106c25f3a222ddad0baead0b811cc64926f924fb836bbfa43580e646",
}, },
"virtualbox": { "virtualbox": {
"box.ovf": "8ad49ba600fbd1027e35c8fd41d37383c04bad30fdbafa860a29911d207a3e7b", "box.ovf": "5e4de5f1f4b481b2c1917c0b2f6e6334f4741cc18c5b278e3bafb094535ff2cb",
"box.vmdk": "57602a776860805e82bd3f61cdca9711f39781011db0f8f1dee9b2a614b2c889", "box.vmdk": "737053bc886037ae76bb38a1776eba2a5579d49423de990e93ef4a3f0cab4f1c",
"Vagrantfile": "0bbc2ae97668d8da27ab97b766752dcd0bf9e41900e21057de15a58ee7fae47d", "Vagrantfile": "0bbc2ae97668d8da27ab97b766752dcd0bf9e41900e21057de15a58ee7fae47d",
"metadata.json": "ffdaa989f2f6932cd8042e1102371f405cc7ad38e324210a1326192e4689e83a", "metadata.json": "ffdaa989f2f6932cd8042e1102371f405cc7ad38e324210a1326192e4689e83a",
} }
}, },
'11.20220317.1': {
'libvirt': {
'box.img': 'fbde152a2f61d191983be9d1dbeae2591af32cca1ec27daa342485d97187515e',
'metadata.json': '42b96a01106c25f3a222ddad0baead0b811cc64926f924fb836bbfa43580e646',
'Vagrantfile': 'f9c6fcbb47a4d0d33eb066859c8e87efd642287a638bd7da69a9e7a6f25fec47',
},
'virtualbox': {
'box.ovf': 'becd5cea2666d42e12def13a91766aa0d4b0e8e6f53102486c2a6cdb4e401b08',
'box.vmdk': '49c96a58a3ee99681d348075864a290c60a8d334fddd21be453c825fcee75eda',
'metadata.json': 'ffdaa989f2f6932cd8042e1102371f405cc7ad38e324210a1326192e4689e83a',
'Vagrantfile': '0bbc2ae97668d8da27ab97b766752dcd0bf9e41900e21057de15a58ee7fae47d',
}
},
} }
configfile = 'buildserver/Vagrantfile.yaml' configfile = 'buildserver/Vagrantfile.yaml'

View File

@ -38,8 +38,10 @@ force-exclude = '''(
| fdroidserver/build\.py | fdroidserver/build\.py
| fdroidserver/checkupdates\.py | fdroidserver/checkupdates\.py
| fdroidserver/common\.py | fdroidserver/common\.py
| fdroidserver/deploy\.py
| fdroidserver/import_subcommand\.py | fdroidserver/import_subcommand\.py
| fdroidserver/index\.py | fdroidserver/index\.py
| fdroidserver/install\.py
| fdroidserver/metadata\.py | fdroidserver/metadata\.py
| fdroidserver/nightly\.py | fdroidserver/nightly\.py
| fdroidserver/publish\.py | fdroidserver/publish\.py
@ -51,6 +53,7 @@ force-exclude = '''(
| tests/extra/manual-vmtools-test\.py | tests/extra/manual-vmtools-test\.py
| tests/gradle-release-checksums\.py | tests/gradle-release-checksums\.py
| tests/openssl-version-check-test\.py | tests/openssl-version-check-test\.py
| tests/testcommon\.py
| tests/valid-package-names/test\.py | tests/valid-package-names/test\.py
| tests/checkupdates\.TestCase | tests/checkupdates\.TestCase
| tests/common\.TestCase | tests/common\.TestCase

View File

@ -71,7 +71,7 @@ with open("README.md", "r") as fh:
setup( setup(
name='fdroidserver', name='fdroidserver',
version='2.3a1', version='2.3a0',
description='F-Droid Server Tools', description='F-Droid Server Tools',
long_description=long_description, long_description=long_description,
long_description_content_type='text/markdown', long_description_content_type='text/markdown',
@ -91,16 +91,15 @@ setup(
'babel', 'babel',
], ],
install_requires=[ install_requires=[
'appdirs', 'androguard >= 3.1.0, != 3.3.0, != 3.3.1, != 3.3.2, <4',
'androguard >= 3.3.5',
'asn1crypto',
'clint', 'clint',
'defusedxml', 'defusedxml',
'GitPython', 'GitPython',
'oscrypto',
'paramiko', 'paramiko',
'Pillow', 'Pillow',
'apache-libcloud >= 0.14.1', 'apache-libcloud >= 0.14.1',
'pyasn1 >=0.4.1, < 0.5.0',
'pyasn1-modules >= 0.2.1, < 0.3',
'python-vagrant', 'python-vagrant',
'PyYAML', 'PyYAML',
'qrcode', 'qrcode',

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -4,6 +4,7 @@
import inspect import inspect
import logging import logging
import optparse
import os import os
import shutil import shutil
import sys import sys
@ -28,7 +29,7 @@ import fdroidserver.common
import fdroidserver.metadata import fdroidserver.metadata
import fdroidserver.scanner import fdroidserver.scanner
import fdroidserver.vmtools import fdroidserver.vmtools
from testcommon import mkdtemp, parse_args_for_test from testcommon import mkdtemp
class FakeProcess: class FakeProcess:
@ -48,6 +49,8 @@ class BuildTest(unittest.TestCase):
def setUp(self): def setUp(self):
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger('androguard.axml')
logger.setLevel(logging.INFO) # tame the axml debug messages
self.basedir = os.path.join(localmodule, 'tests') self.basedir = os.path.join(localmodule, 'tests')
os.chdir(self.basedir) os.chdir(self.basedir)
fdroidserver.common.config = None fdroidserver.common.config = None
@ -218,7 +221,7 @@ class BuildTest(unittest.TestCase):
@mock.patch('fdroidserver.common.get_apk_id') @mock.patch('fdroidserver.common.get_apk_id')
@mock.patch('fdroidserver.build.FDroidPopen') @mock.patch('fdroidserver.build.FDroidPopen')
@mock.patch('fdroidserver.common.is_debuggable_or_testOnly', lambda f: False) @mock.patch('fdroidserver.common.is_apk_and_debuggable', lambda f: False)
@mock.patch('fdroidserver.common.get_native_code', lambda f: 'x86') @mock.patch('fdroidserver.common.get_native_code', lambda f: 'x86')
def test_build_local_maven(self, fake_FDroidPopen, fake_get_apk_id): def test_build_local_maven(self, fake_FDroidPopen, fake_get_apk_id):
"""Test build_local() with a maven project""" """Test build_local() with a maven project"""
@ -339,8 +342,7 @@ class BuildTest(unittest.TestCase):
'fdroidserver.common.sha256sum', 'fdroidserver.common.sha256sum',
return_value='ad7ce5467e18d40050dc51b8e7affc3e635c85bd8c59be62de32352328ed467e', return_value='ad7ce5467e18d40050dc51b8e7affc3e635c85bd8c59be62de32352328ed467e',
) as _ignored, mock.patch( ) as _ignored, mock.patch(
'fdroidserver.common.is_debuggable_or_testOnly', 'fdroidserver.common.is_apk_and_debuggable', return_value=False
return_value=False,
) as _ignored, mock.patch( ) as _ignored, mock.patch(
'fdroidserver.build.FDroidPopen', FakeProcess 'fdroidserver.build.FDroidPopen', FakeProcess
) as _ignored, mock.patch( ) as _ignored, mock.patch(
@ -392,7 +394,7 @@ class BuildTest(unittest.TestCase):
@mock.patch('sdkmanager.build_package_list', lambda use_net: None) @mock.patch('sdkmanager.build_package_list', lambda use_net: None)
@mock.patch('fdroidserver.build.FDroidPopen', FakeProcess) @mock.patch('fdroidserver.build.FDroidPopen', FakeProcess)
@mock.patch('fdroidserver.common.get_native_code', lambda _ignored: 'x86') @mock.patch('fdroidserver.common.get_native_code', lambda _ignored: 'x86')
@mock.patch('fdroidserver.common.is_debuggable_or_testOnly', lambda _ignored: False) @mock.patch('fdroidserver.common.is_apk_and_debuggable', lambda _ignored: False)
@mock.patch( @mock.patch(
'fdroidserver.common.sha256sum', 'fdroidserver.common.sha256sum',
lambda f: 'ad7ce5467e18d40050dc51b8e7affc3e635c85bd8c59be62de32352328ed467e', lambda f: 'ad7ce5467e18d40050dc51b8e7affc3e635c85bd8c59be62de32352328ed467e',
@ -529,8 +531,7 @@ class BuildTest(unittest.TestCase):
return_value=(app.id, build.versionCode, build.versionName), return_value=(app.id, build.versionCode, build.versionName),
): ):
with mock.patch( with mock.patch(
'fdroidserver.common.is_debuggable_or_testOnly', 'fdroidserver.common.is_apk_and_debuggable', return_value=False
return_value=False,
): ):
fdroidserver.build.build_local( fdroidserver.build.build_local(
app, app,
@ -561,7 +562,7 @@ class BuildTest(unittest.TestCase):
os.chdir(self.testdir) os.chdir(self.testdir)
os.mkdir("build") os.mkdir("build")
config = fdroidserver.common.read_config() config = fdroidserver.common.get_config()
config['sdk_path'] = os.getenv('ANDROID_HOME') config['sdk_path'] = os.getenv('ANDROID_HOME')
config['ndk_paths'] = {'r10d': os.getenv('ANDROID_NDK_HOME')} config['ndk_paths'] = {'r10d': os.getenv('ANDROID_NDK_HOME')}
fdroidserver.common.config = config fdroidserver.common.config = config
@ -1103,17 +1104,15 @@ class BuildTest(unittest.TestCase):
if __name__ == "__main__": if __name__ == "__main__":
os.chdir(os.path.dirname(__file__)) os.chdir(os.path.dirname(__file__))
import argparse parser = optparse.OptionParser()
parser.add_option(
parser = argparse.ArgumentParser()
parser.add_argument(
"-v", "-v",
"--verbose", "--verbose",
action="store_true", action="store_true",
default=False, default=False,
help="Spew out even more information than normal", help="Spew out even more information than normal",
) )
parse_args_for_test(parser, sys.argv) (fdroidserver.common.options, args) = parser.parse_args(['--verbose'])
newSuite = unittest.TestSuite() newSuite = unittest.TestSuite()
newSuite.addTest(unittest.makeSuite(BuildTest)) newSuite.addTest(unittest.makeSuite(BuildTest))

View File

@ -3,6 +3,7 @@
# http://www.drdobbs.com/testing/unit-testing-with-python/240165163 # http://www.drdobbs.com/testing/unit-testing-with-python/240165163
import logging import logging
import optparse
import os import os
import sys import sys
import unittest import unittest
@ -29,6 +30,8 @@ class CheckupdatesTest(unittest.TestCase):
os.chdir(self.basedir) os.chdir(self.basedir)
def test_autoupdatemode_no_suffix(self): def test_autoupdatemode_no_suffix(self):
fdroidserver.checkupdates.options = mock.Mock()
fdroidserver.checkupdates.options.auto = 'bleh'
fdroidserver.checkupdates.config = {} fdroidserver.checkupdates.config = {}
app = fdroidserver.metadata.App() app = fdroidserver.metadata.App()
@ -49,7 +52,7 @@ class CheckupdatesTest(unittest.TestCase):
): ):
with mock.patch('fdroidserver.metadata.write_metadata', mock.Mock()): with mock.patch('fdroidserver.metadata.write_metadata', mock.Mock()):
with mock.patch('subprocess.call', lambda cmd: 0): with mock.patch('subprocess.call', lambda cmd: 0):
fdroidserver.checkupdates.checkupdates_app(app, auto=True) fdroidserver.checkupdates.checkupdates_app(app)
build = app['Builds'][-1] build = app['Builds'][-1]
self.assertEqual(build.versionName, '1.1.9') self.assertEqual(build.versionName, '1.1.9')
@ -61,13 +64,15 @@ class CheckupdatesTest(unittest.TestCase):
with mock.patch('fdroidserver.metadata.write_metadata', mock.Mock()): with mock.patch('fdroidserver.metadata.write_metadata', mock.Mock()):
with mock.patch('subprocess.call', lambda cmd: 0): with mock.patch('subprocess.call', lambda cmd: 0):
with self.assertRaises(FDroidException): with self.assertRaises(FDroidException):
fdroidserver.checkupdates.checkupdates_app(app, auto=True) fdroidserver.checkupdates.checkupdates_app(app)
build = app['Builds'][-1] build = app['Builds'][-1]
self.assertEqual(build.versionName, '1.1.9') self.assertEqual(build.versionName, '1.1.9')
self.assertEqual(build.commit, '1.1.9') self.assertEqual(build.commit, '1.1.9')
def test_autoupdatemode_suffix(self): def test_autoupdatemode_suffix(self):
fdroidserver.checkupdates.options = mock.Mock()
fdroidserver.checkupdates.options.auto = 'bleh'
fdroidserver.checkupdates.config = {} fdroidserver.checkupdates.config = {}
app = fdroidserver.metadata.App() app = fdroidserver.metadata.App()
@ -88,13 +93,15 @@ class CheckupdatesTest(unittest.TestCase):
): ):
with mock.patch('fdroidserver.metadata.write_metadata', mock.Mock()): with mock.patch('fdroidserver.metadata.write_metadata', mock.Mock()):
with mock.patch('subprocess.call', lambda cmd: 0): with mock.patch('subprocess.call', lambda cmd: 0):
fdroidserver.checkupdates.checkupdates_app(app, auto=True) fdroidserver.checkupdates.checkupdates_app(app)
build = app['Builds'][-1] build = app['Builds'][-1]
self.assertEqual(build.versionName, '1.1.9.10109-fdroid') self.assertEqual(build.versionName, '1.1.9.10109-fdroid')
self.assertEqual(build.commit, 'v1.1.9_10109') self.assertEqual(build.commit, 'v1.1.9_10109')
def test_autoupdate_multi_variants(self): def test_autoupdate_multi_variants(self):
fdroidserver.checkupdates.options = mock.Mock()
fdroidserver.checkupdates.options.auto = 'bleh'
fdroidserver.checkupdates.config = {} fdroidserver.checkupdates.config = {}
app = fdroidserver.metadata.App() app = fdroidserver.metadata.App()
@ -127,7 +134,7 @@ class CheckupdatesTest(unittest.TestCase):
): ):
with mock.patch('fdroidserver.metadata.write_metadata', mock.Mock()): with mock.patch('fdroidserver.metadata.write_metadata', mock.Mock()):
with mock.patch('subprocess.call', lambda cmd: 0): with mock.patch('subprocess.call', lambda cmd: 0):
fdroidserver.checkupdates.checkupdates_app(app, auto=True) fdroidserver.checkupdates.checkupdates_app(app)
build = app['Builds'][-2] build = app['Builds'][-2]
self.assertEqual(build.versionName, '1.1.9') self.assertEqual(build.versionName, '1.1.9')
@ -143,6 +150,8 @@ class CheckupdatesTest(unittest.TestCase):
self.assertEqual(app.CurrentVersionCode, 101093) self.assertEqual(app.CurrentVersionCode, 101093)
def test_checkupdates_app_http(self): def test_checkupdates_app_http(self):
fdroidserver.checkupdates.options = mock.Mock()
fdroidserver.checkupdates.options.auto = 'bleh'
fdroidserver.checkupdates.config = {} fdroidserver.checkupdates.config = {}
app = fdroidserver.metadata.App() app = fdroidserver.metadata.App()
@ -156,7 +165,7 @@ class CheckupdatesTest(unittest.TestCase):
'fdroidserver.checkupdates.check_http', lambda app: (None, 'bla') 'fdroidserver.checkupdates.check_http', lambda app: (None, 'bla')
): ):
with self.assertRaises(FDroidException): with self.assertRaises(FDroidException):
fdroidserver.checkupdates.checkupdates_app(app, auto=True) fdroidserver.checkupdates.checkupdates_app(app)
with mock.patch( with mock.patch(
'fdroidserver.checkupdates.check_http', lambda app: ('1.1.9', 10109) 'fdroidserver.checkupdates.check_http', lambda app: ('1.1.9', 10109)
@ -165,10 +174,12 @@ class CheckupdatesTest(unittest.TestCase):
'fdroidserver.metadata.write_metadata', mock.Mock() 'fdroidserver.metadata.write_metadata', mock.Mock()
) as wrmock: ) as wrmock:
with mock.patch('subprocess.call', lambda cmd: 0): with mock.patch('subprocess.call', lambda cmd: 0):
fdroidserver.checkupdates.checkupdates_app(app, auto=True) fdroidserver.checkupdates.checkupdates_app(app)
wrmock.assert_called_with(app.metadatapath, app) wrmock.assert_called_with(app.metadatapath, app)
def test_checkupdates_app_tags(self): def test_checkupdates_app_tags(self):
fdroidserver.checkupdates.options = mock.Mock()
fdroidserver.checkupdates.options.auto = 'bleh'
fdroidserver.checkupdates.config = {} fdroidserver.checkupdates.config = {}
app = fdroidserver.metadata.App() app = fdroidserver.metadata.App()
@ -189,7 +200,7 @@ class CheckupdatesTest(unittest.TestCase):
lambda app, pattern: (None, 'bla', None), lambda app, pattern: (None, 'bla', None),
): ):
with self.assertRaises(FDroidException): with self.assertRaises(FDroidException):
fdroidserver.checkupdates.checkupdates_app(app, auto=True) fdroidserver.checkupdates.checkupdates_app(app)
with mock.patch( with mock.patch(
'fdroidserver.checkupdates.check_tags', 'fdroidserver.checkupdates.check_tags',
@ -197,13 +208,15 @@ class CheckupdatesTest(unittest.TestCase):
): ):
with mock.patch('fdroidserver.metadata.write_metadata', mock.Mock()): with mock.patch('fdroidserver.metadata.write_metadata', mock.Mock()):
with mock.patch('subprocess.call', lambda cmd: 0): with mock.patch('subprocess.call', lambda cmd: 0):
fdroidserver.checkupdates.checkupdates_app(app, auto=True) fdroidserver.checkupdates.checkupdates_app(app)
build = app['Builds'][-1] build = app['Builds'][-1]
self.assertEqual(build.versionName, '1.1.9') self.assertEqual(build.versionName, '1.1.9')
self.assertEqual(build.commit, 'v1.1.9') self.assertEqual(build.commit, 'v1.1.9')
def test_check_http(self): def test_check_http(self):
fdroidserver.checkupdates.options = mock.Mock()
app = fdroidserver.metadata.App() app = fdroidserver.metadata.App()
app.id = 'loop.starts.shooting' app.id = 'loop.starts.shooting'
app.metadatapath = 'metadata/' + app.id + '.yml' app.metadatapath = 'metadata/' + app.id + '.yml'
@ -230,6 +243,8 @@ class CheckupdatesTest(unittest.TestCase):
fdroidserver.checkupdates.check_http(app) fdroidserver.checkupdates.check_http(app)
def test_check_http_ignore(self): def test_check_http_ignore(self):
fdroidserver.checkupdates.options = mock.Mock()
app = fdroidserver.metadata.App() app = fdroidserver.metadata.App()
app.id = 'loop.starts.shooting' app.id = 'loop.starts.shooting'
app.metadatapath = 'metadata/' + app.id + '.yml' app.metadatapath = 'metadata/' + app.id + '.yml'
@ -245,6 +260,8 @@ class CheckupdatesTest(unittest.TestCase):
self.assertEqual(vername, None) self.assertEqual(vername, None)
def test_check_tags_data(self): def test_check_tags_data(self):
fdroidserver.checkupdates.options = mock.Mock()
app = fdroidserver.metadata.App() app = fdroidserver.metadata.App()
app.id = 'loop.starts.shooting' app.id = 'loop.starts.shooting'
app.metadatapath = 'metadata/' + app.id + '.yml' app.metadatapath = 'metadata/' + app.id + '.yml'
@ -319,18 +336,15 @@ class CheckupdatesTest(unittest.TestCase):
if __name__ == "__main__": if __name__ == "__main__":
import argparse parser = optparse.OptionParser()
from testcommon import parse_args_for_test parser.add_option(
parser = argparse.ArgumentParser()
parser.add_argument(
"-v", "-v",
"--verbose", "--verbose",
action="store_true", action="store_true",
default=False, default=False,
help="Spew out even more information than normal", help="Spew out even more information than normal",
) )
parse_args_for_test(parser, sys.argv) (fdroidserver.common.options, args) = parser.parse_args(['--verbose'])
newSuite = unittest.TestSuite() newSuite = unittest.TestSuite()
newSuite.addTest(unittest.makeSuite(CheckupdatesTest)) newSuite.addTest(unittest.makeSuite(CheckupdatesTest))

View File

@ -9,9 +9,9 @@ import importlib
import inspect import inspect
import json import json
import logging import logging
import optparse
import os import os
import re import re
import ruamel.yaml
import shutil import shutil
import subprocess import subprocess
import sys import sys
@ -21,7 +21,6 @@ import unittest
import textwrap import textwrap
import yaml import yaml
import gzip import gzip
from argparse import ArgumentParser
from zipfile import BadZipFile, ZipFile from zipfile import BadZipFile, ZipFile
from unittest import mock from unittest import mock
from pathlib import Path from pathlib import Path
@ -38,19 +37,13 @@ import fdroidserver.index
import fdroidserver.signindex import fdroidserver.signindex
import fdroidserver.common import fdroidserver.common
import fdroidserver.metadata import fdroidserver.metadata
from testcommon import TmpCwd, mkdtemp, parse_args_for_test from testcommon import TmpCwd, mkdtemp
from fdroidserver.common import ANTIFEATURES_CONFIG_NAME, CATEGORIES_CONFIG_NAME from fdroidserver.common import ANTIFEATURES_CONFIG_NAME, CATEGORIES_CONFIG_NAME
from fdroidserver.exception import FDroidException, VCSException,\ from fdroidserver.exception import FDroidException, VCSException,\
MetaDataException, VerificationException MetaDataException, VerificationException
from fdroidserver.looseversion import LooseVersion from fdroidserver.looseversion import LooseVersion
def _mock_common_module_options_instance():
"""Helper method to deal with difficult visibility of the module-level options."""
fdroidserver.common.options = mock.Mock()
fdroidserver.common.options.verbose = False
class CommonTest(unittest.TestCase): class CommonTest(unittest.TestCase):
'''fdroidserver/common.py''' '''fdroidserver/common.py'''
@ -63,22 +56,17 @@ class CommonTest(unittest.TestCase):
if not os.path.exists(self.tmpdir): if not os.path.exists(self.tmpdir):
os.makedirs(self.tmpdir) os.makedirs(self.tmpdir)
os.chdir(self.basedir) os.chdir(self.basedir)
# these are declared as None at the top of the module file
fdroidserver.common.config = None fdroidserver.common.config = None
fdroidserver.common.options = None fdroidserver.common.options = mock.Mock()
fdroidserver.common.options.verbose = False
fdroidserver.metadata.srclibs = None fdroidserver.metadata.srclibs = None
self._td = mkdtemp() self._td = mkdtemp()
self.testdir = self._td.name self.testdir = self._td.name
def tearDown(self): def tearDown(self):
fdroidserver.common.config = None
fdroidserver.common.options = None
os.chdir(self.basedir) os.chdir(self.basedir)
self._td.cleanup() self._td.cleanup()
if os.path.exists(self.tmpdir): shutil.rmtree(self.tmpdir)
shutil.rmtree(self.tmpdir)
def test_parse_human_readable_size(self): def test_parse_human_readable_size(self):
for k, v in ( for k, v in (
@ -196,7 +184,7 @@ class CommonTest(unittest.TestCase):
fdroidserver.common._add_java_paths_to_config(pathlist, config) fdroidserver.common._add_java_paths_to_config(pathlist, config)
self.assertEqual(config['java_paths']['8'], choice[1:]) self.assertEqual(config['java_paths']['8'], choice[1:])
def test_is_debuggable_or_testOnly(self): def test_is_apk_and_debuggable(self):
config = dict() config = dict()
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
fdroidserver.common.config = config fdroidserver.common.config = config
@ -208,7 +196,7 @@ class CommonTest(unittest.TestCase):
testfiles.append(os.path.join(self.basedir, 'urzip-badcert.apk')) testfiles.append(os.path.join(self.basedir, 'urzip-badcert.apk'))
for apkfile in testfiles: for apkfile in testfiles:
self.assertTrue( self.assertTrue(
fdroidserver.common.is_debuggable_or_testOnly(apkfile), fdroidserver.common.is_apk_and_debuggable(apkfile),
"debuggable APK state was not properly parsed!", "debuggable APK state was not properly parsed!",
) )
@ -219,7 +207,7 @@ class CommonTest(unittest.TestCase):
testfiles.append(os.path.join(self.basedir, 'v2.only.sig_2.apk')) testfiles.append(os.path.join(self.basedir, 'v2.only.sig_2.apk'))
for apkfile in testfiles: for apkfile in testfiles:
self.assertFalse( self.assertFalse(
fdroidserver.common.is_debuggable_or_testOnly(apkfile), fdroidserver.common.is_apk_and_debuggable(apkfile),
"debuggable APK state was not properly parsed!", "debuggable APK state was not properly parsed!",
) )
@ -367,7 +355,6 @@ class CommonTest(unittest.TestCase):
config = dict() config = dict()
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
fdroidserver.common.config = config fdroidserver.common.config = config
_mock_common_module_options_instance()
srclibname = 'FakeSrcLib' srclibname = 'FakeSrcLib'
srclib_testdir = os.path.join(self.testdir, 'build', 'srclib') srclib_testdir = os.path.join(self.testdir, 'build', 'srclib')
@ -409,7 +396,6 @@ class CommonTest(unittest.TestCase):
onserver=True, refresh=False) # do not clone in this test onserver=True, refresh=False) # do not clone in this test
def test_prepare_sources_refresh(self): def test_prepare_sources_refresh(self):
_mock_common_module_options_instance()
packageName = 'org.fdroid.ci.test.app' packageName = 'org.fdroid.ci.test.app'
os.chdir(self.tmpdir) os.chdir(self.tmpdir)
os.mkdir('build') os.mkdir('build')
@ -480,7 +466,6 @@ class CommonTest(unittest.TestCase):
config = dict() config = dict()
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
fdroidserver.common.config = config fdroidserver.common.config = config
_mock_common_module_options_instance()
commands = ['sh', '-c', 'echo stdout message && echo stderr message 1>&2'] commands = ['sh', '-c', 'echo stdout message && echo stderr message 1>&2']
@ -491,8 +476,7 @@ class CommonTest(unittest.TestCase):
self.assertEqual(p.output, 'stdout message\n') self.assertEqual(p.output, 'stdout message\n')
def test_signjar(self): def test_signjar(self):
_mock_common_module_options_instance() config = fdroidserver.common.read_config(fdroidserver.common.options)
config = fdroidserver.common.read_config()
config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner')
fdroidserver.common.config = config fdroidserver.common.config = config
fdroidserver.signindex.config = config fdroidserver.signindex.config = config
@ -512,8 +496,7 @@ class CommonTest(unittest.TestCase):
) )
def test_verify_apk_signature(self): def test_verify_apk_signature(self):
_mock_common_module_options_instance() config = fdroidserver.common.read_config(fdroidserver.common.options)
config = fdroidserver.common.read_config()
fdroidserver.common.config = config fdroidserver.common.config = config
self.assertTrue(fdroidserver.common.verify_apk_signature('bad-unicode-πÇÇ现代通用字-български-عربي1.apk')) self.assertTrue(fdroidserver.common.verify_apk_signature('bad-unicode-πÇÇ现代通用字-български-عربي1.apk'))
@ -535,8 +518,7 @@ class CommonTest(unittest.TestCase):
self.assertFalse(fdroidserver.common.verify_apk_signature('urzip-release-unsigned.apk')) self.assertFalse(fdroidserver.common.verify_apk_signature('urzip-release-unsigned.apk'))
def test_verify_old_apk_signature(self): def test_verify_old_apk_signature(self):
_mock_common_module_options_instance() config = fdroidserver.common.read_config(fdroidserver.common.options)
config = fdroidserver.common.read_config()
config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner')
fdroidserver.common.config = config fdroidserver.common.config = config
@ -557,7 +539,7 @@ class CommonTest(unittest.TestCase):
def test_verify_jar_signature(self): def test_verify_jar_signature(self):
"""Sign entry.jar and make sure it validates""" """Sign entry.jar and make sure it validates"""
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner')
config['keystore'] = os.path.join(self.basedir, 'keystore.jks') config['keystore'] = os.path.join(self.basedir, 'keystore.jks')
config['repo_keyalias'] = 'sova' config['repo_keyalias'] = 'sova'
@ -575,7 +557,7 @@ class CommonTest(unittest.TestCase):
def test_verify_jar_signature_fails(self): def test_verify_jar_signature_fails(self):
"""Test verify_jar_signature fails on unsigned and deprecated algorithms""" """Test verify_jar_signature fails on unsigned and deprecated algorithms"""
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner')
fdroidserver.common.config = config fdroidserver.common.config = config
source_dir = os.path.join(self.basedir, 'signindex') source_dir = os.path.join(self.basedir, 'signindex')
@ -585,7 +567,7 @@ class CommonTest(unittest.TestCase):
fdroidserver.common.verify_jar_signature(testfile) fdroidserver.common.verify_jar_signature(testfile)
def test_verify_deprecated_jar_signature(self): def test_verify_deprecated_jar_signature(self):
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner') config['jarsigner'] = fdroidserver.common.find_sdk_tools_cmd('jarsigner')
fdroidserver.common.config = config fdroidserver.common.config = config
source_dir = os.path.join(self.basedir, 'signindex') source_dir = os.path.join(self.basedir, 'signindex')
@ -598,9 +580,8 @@ class CommonTest(unittest.TestCase):
fdroidserver.common.verify_deprecated_jar_signature(testfile) fdroidserver.common.verify_deprecated_jar_signature(testfile)
def test_verify_apks(self): def test_verify_apks(self):
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
fdroidserver.common.config = config fdroidserver.common.config = config
_mock_common_module_options_instance()
sourceapk = os.path.join(self.basedir, 'urzip.apk') sourceapk = os.path.join(self.basedir, 'urzip.apk')
@ -633,27 +614,6 @@ class CommonTest(unittest.TestCase):
self.assertFalse(fdroidserver.common.verify_apk_signature(twosigapk)) self.assertFalse(fdroidserver.common.verify_apk_signature(twosigapk))
self.assertIsNone(fdroidserver.common.verify_apks(sourceapk, twosigapk, self.tmpdir)) self.assertIsNone(fdroidserver.common.verify_apks(sourceapk, twosigapk, self.tmpdir))
def test_get_certificate_with_chain_sandisk(self):
"""Test that APK signatures with a cert chain are parsed like apksigner.
SanDisk signs their APKs with a X.509 certificate chain of
trust, so there are actually three certificates
included. apksigner only cares about the certificate in the
chain that actually signs the manifest.
The correct value comes from:
apksigner verify --print-certs 883cbdae7aeb2e4b122e8ee8d89966c7062d0d49107a130235fa220a5b994a79.apk
"""
cert = fdroidserver.common.get_certificate(
signature_block_file=Path('SANAPPSI.RSA').read_bytes(),
signature_file=Path('SANAPPSI.SF').read_bytes(),
)
self.assertEqual(
'ea0abbf2a142e4b167405d516b2cc408c4af4b29cd50ba281aa4470d4aab3e53',
fdroidserver.common.signer_fingerprint(cert),
)
def test_write_to_config(self): def test_write_to_config(self):
with tempfile.TemporaryDirectory() as tmpPath: with tempfile.TemporaryDirectory() as tmpPath:
cfgPath = os.path.join(tmpPath, 'config.py') cfgPath = os.path.join(tmpPath, 'config.py')
@ -907,8 +867,7 @@ class CommonTest(unittest.TestCase):
) )
def test_sign_apk(self): def test_sign_apk(self):
_mock_common_module_options_instance() config = fdroidserver.common.read_config(fdroidserver.common.options)
config = fdroidserver.common.read_config()
if 'apksigner' not in config: if 'apksigner' not in config:
self.skipTest('SKIPPING test_sign_apk, apksigner not installed!') self.skipTest('SKIPPING test_sign_apk, apksigner not installed!')
@ -942,7 +901,7 @@ class CommonTest(unittest.TestCase):
self.assertTrue(os.path.isfile(signed)) self.assertTrue(os.path.isfile(signed))
self.assertFalse(os.path.isfile(unsigned)) self.assertFalse(os.path.isfile(unsigned))
self.assertTrue(fdroidserver.common.verify_apk_signature(signed)) self.assertTrue(fdroidserver.common.verify_apk_signature(signed))
self.assertEqual('18', fdroidserver.common.get_androguard_APK(signed).get_min_sdk_version()) self.assertEqual('18', fdroidserver.common._get_androguard_APK(signed).get_min_sdk_version())
shutil.copy(os.path.join(self.basedir, 'minimal_targetsdk_30_unsigned.apk'), self.testdir) shutil.copy(os.path.join(self.basedir, 'minimal_targetsdk_30_unsigned.apk'), self.testdir)
unsigned = os.path.join(self.testdir, 'minimal_targetsdk_30_unsigned.apk') unsigned = os.path.join(self.testdir, 'minimal_targetsdk_30_unsigned.apk')
@ -955,7 +914,7 @@ class CommonTest(unittest.TestCase):
self.assertFalse(os.path.isfile(unsigned)) self.assertFalse(os.path.isfile(unsigned))
self.assertTrue(fdroidserver.common.verify_apk_signature(signed)) self.assertTrue(fdroidserver.common.verify_apk_signature(signed))
# verify it has a v2 signature # verify it has a v2 signature
self.assertTrue(fdroidserver.common.get_androguard_APK(signed).is_signed_v2()) self.assertTrue(fdroidserver.common._get_androguard_APK(signed).is_signed_v2())
shutil.copy(os.path.join(self.basedir, 'no_targetsdk_minsdk30_unsigned.apk'), self.testdir) shutil.copy(os.path.join(self.basedir, 'no_targetsdk_minsdk30_unsigned.apk'), self.testdir)
unsigned = os.path.join(self.testdir, 'no_targetsdk_minsdk30_unsigned.apk') unsigned = os.path.join(self.testdir, 'no_targetsdk_minsdk30_unsigned.apk')
@ -963,7 +922,7 @@ class CommonTest(unittest.TestCase):
fdroidserver.common.sign_apk(unsigned, signed, config['keyalias']) fdroidserver.common.sign_apk(unsigned, signed, config['keyalias'])
self.assertTrue(fdroidserver.common.verify_apk_signature(signed)) self.assertTrue(fdroidserver.common.verify_apk_signature(signed))
self.assertTrue(fdroidserver.common.get_androguard_APK(signed).is_signed_v2()) self.assertTrue(fdroidserver.common._get_androguard_APK(signed).is_signed_v2())
shutil.copy(os.path.join(self.basedir, 'no_targetsdk_minsdk1_unsigned.apk'), self.testdir) shutil.copy(os.path.join(self.basedir, 'no_targetsdk_minsdk1_unsigned.apk'), self.testdir)
unsigned = os.path.join(self.testdir, 'no_targetsdk_minsdk1_unsigned.apk') unsigned = os.path.join(self.testdir, 'no_targetsdk_minsdk1_unsigned.apk')
@ -978,8 +937,7 @@ class CommonTest(unittest.TestCase):
@unittest.skipIf(os.getuid() == 0, 'This is meaningless when run as root') @unittest.skipIf(os.getuid() == 0, 'This is meaningless when run as root')
def test_sign_apk_fail(self): def test_sign_apk_fail(self):
_mock_common_module_options_instance() config = fdroidserver.common.read_config(fdroidserver.common.options)
config = fdroidserver.common.read_config()
if 'apksigner' not in config: if 'apksigner' not in config:
self.skipTest('SKIPPING test_sign_apk_fail, apksigner not installed!') self.skipTest('SKIPPING test_sign_apk_fail, apksigner not installed!')
@ -1002,8 +960,7 @@ class CommonTest(unittest.TestCase):
self.assertFalse(os.path.isfile(signed)) self.assertFalse(os.path.isfile(signed))
def test_sign_apk_corrupt(self): def test_sign_apk_corrupt(self):
_mock_common_module_options_instance() config = fdroidserver.common.read_config(fdroidserver.common.options)
config = fdroidserver.common.read_config()
if 'apksigner' not in config: if 'apksigner' not in config:
self.skipTest('SKIPPING test_sign_apk_corrupt, apksigner not installed!') self.skipTest('SKIPPING test_sign_apk_corrupt, apksigner not installed!')
@ -1029,8 +986,7 @@ class CommonTest(unittest.TestCase):
) )
def test_resign_apk(self): def test_resign_apk(self):
"""When using apksigner, it should resign signed APKs""" """When using apksigner, it should resign signed APKs"""
_mock_common_module_options_instance() config = fdroidserver.common.read_config(fdroidserver.common.options)
config = fdroidserver.common.read_config()
if 'apksigner' not in config: if 'apksigner' not in config:
self.skipTest('SKIPPING test_resign_apk, apksigner not installed!') self.skipTest('SKIPPING test_resign_apk, apksigner not installed!')
@ -1082,11 +1038,6 @@ class CommonTest(unittest.TestCase):
('org.bitbucket.tickytacky.mirrormirror_3.apk', 'org.bitbucket.tickytacky.mirrormirror', 3, '1.0.2'), ('org.bitbucket.tickytacky.mirrormirror_3.apk', 'org.bitbucket.tickytacky.mirrormirror', 3, '1.0.2'),
('org.bitbucket.tickytacky.mirrormirror_4.apk', 'org.bitbucket.tickytacky.mirrormirror', 4, '1.0.3'), ('org.bitbucket.tickytacky.mirrormirror_4.apk', 'org.bitbucket.tickytacky.mirrormirror', 4, '1.0.3'),
('org.dyndns.fules.ck_20.apk', 'org.dyndns.fules.ck', 20, 'v1.6pre2'), ('org.dyndns.fules.ck_20.apk', 'org.dyndns.fules.ck', 20, 'v1.6pre2'),
('issue-1128-min-sdk-30-poc.apk', 'org.fdroid.ci', 1, '1.0'),
('issue-1128-poc1.apk', 'android.appsecurity.cts.tinyapp', 10, '1.0'),
('issue-1128-poc2.apk', 'android.appsecurity.cts.tinyapp', 10, '1.0'),
('issue-1128-poc3a.apk', 'android.appsecurity.cts.tinyapp', 10, '1.0'),
('issue-1128-poc3b.apk', 'android.appsecurity.cts.tinyapp', 10, '1.0'),
('urzip.apk', 'info.guardianproject.urzip', 100, '0.1'), ('urzip.apk', 'info.guardianproject.urzip', 100, '0.1'),
('urzip-badcert.apk', 'info.guardianproject.urzip', 100, '0.1'), ('urzip-badcert.apk', 'info.guardianproject.urzip', 100, '0.1'),
('urzip-badsig.apk', 'info.guardianproject.urzip', 100, '0.1'), ('urzip-badsig.apk', 'info.guardianproject.urzip', 100, '0.1'),
@ -1194,19 +1145,14 @@ class CommonTest(unittest.TestCase):
"""This is a sanity test that androguard isn't broken""" """This is a sanity test that androguard isn't broken"""
def get_minSdkVersion(apkfile): def get_minSdkVersion(apkfile):
apk = fdroidserver.common.get_androguard_APK(apkfile) apk = fdroidserver.common._get_androguard_APK(apkfile)
return fdroidserver.common.get_min_sdk_version(apk) return fdroidserver.common.get_min_sdk_version(apk)
def get_targetSdkVersion(apkfile): def get_targetSdkVersion(apkfile):
apk = fdroidserver.common.get_androguard_APK(apkfile) apk = fdroidserver.common._get_androguard_APK(apkfile)
return apk.get_effective_target_sdk_version() return apk.get_effective_target_sdk_version()
self.assertEqual(4, get_minSdkVersion('bad-unicode-πÇÇ现代通用字-български-عربي1.apk')) self.assertEqual(4, get_minSdkVersion('bad-unicode-πÇÇ现代通用字-български-عربي1.apk'))
self.assertEqual(30, get_minSdkVersion('issue-1128-min-sdk-30-poc.apk'))
self.assertEqual(29, get_minSdkVersion('issue-1128-poc1.apk'))
self.assertEqual(29, get_minSdkVersion('issue-1128-poc2.apk'))
self.assertEqual(23, get_minSdkVersion('issue-1128-poc3a.apk'))
self.assertEqual(23, get_minSdkVersion('issue-1128-poc3b.apk'))
self.assertEqual(14, get_minSdkVersion('org.bitbucket.tickytacky.mirrormirror_1.apk')) self.assertEqual(14, get_minSdkVersion('org.bitbucket.tickytacky.mirrormirror_1.apk'))
self.assertEqual(14, get_minSdkVersion('org.bitbucket.tickytacky.mirrormirror_2.apk')) self.assertEqual(14, get_minSdkVersion('org.bitbucket.tickytacky.mirrormirror_2.apk'))
self.assertEqual(14, get_minSdkVersion('org.bitbucket.tickytacky.mirrormirror_3.apk')) self.assertEqual(14, get_minSdkVersion('org.bitbucket.tickytacky.mirrormirror_3.apk'))
@ -1217,7 +1163,6 @@ class CommonTest(unittest.TestCase):
self.assertEqual(4, get_minSdkVersion('urzip-badsig.apk')) self.assertEqual(4, get_minSdkVersion('urzip-badsig.apk'))
self.assertEqual(4, get_minSdkVersion('urzip-release.apk')) self.assertEqual(4, get_minSdkVersion('urzip-release.apk'))
self.assertEqual(4, get_minSdkVersion('urzip-release-unsigned.apk')) self.assertEqual(4, get_minSdkVersion('urzip-release-unsigned.apk'))
self.assertEqual(27, get_minSdkVersion('v2.only.sig_2.apk'))
self.assertEqual(3, get_minSdkVersion('repo/com.politedroid_3.apk')) self.assertEqual(3, get_minSdkVersion('repo/com.politedroid_3.apk'))
self.assertEqual(3, get_minSdkVersion('repo/com.politedroid_4.apk')) self.assertEqual(3, get_minSdkVersion('repo/com.politedroid_4.apk'))
self.assertEqual(3, get_minSdkVersion('repo/com.politedroid_5.apk')) self.assertEqual(3, get_minSdkVersion('repo/com.politedroid_5.apk'))
@ -1936,7 +1881,7 @@ class CommonTest(unittest.TestCase):
os.chdir(self.tmpdir) os.chdir(self.tmpdir)
self.assertFalse(os.path.exists('config.yml')) self.assertFalse(os.path.exists('config.yml'))
self.assertFalse(os.path.exists('config.py')) self.assertFalse(os.path.exists('config.py'))
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertFalse(config.get('update_stats')) self.assertFalse(config.get('update_stats'))
self.assertIsNotNone(config.get('char_limits')) self.assertIsNotNone(config.get('char_limits'))
@ -1946,7 +1891,7 @@ class CommonTest(unittest.TestCase):
open('config.yml', 'w').close() open('config.yml', 'w').close()
self.assertTrue(os.path.exists('config.yml')) self.assertTrue(os.path.exists('config.yml'))
self.assertFalse(os.path.exists('config.py')) self.assertFalse(os.path.exists('config.py'))
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertFalse(config.get('update_stats')) self.assertFalse(config.get('update_stats'))
self.assertIsNotNone(config.get('char_limits')) self.assertIsNotNone(config.get('char_limits'))
@ -1957,7 +1902,7 @@ class CommonTest(unittest.TestCase):
fp.write('apksigner: yml') fp.write('apksigner: yml')
self.assertTrue(os.path.exists('config.yml')) self.assertTrue(os.path.exists('config.yml'))
self.assertFalse(os.path.exists('config.py')) self.assertFalse(os.path.exists('config.py'))
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertEqual('yml', config.get('apksigner')) self.assertEqual('yml', config.get('apksigner'))
def test_with_config_yml_utf8(self): def test_with_config_yml_utf8(self):
@ -1968,7 +1913,7 @@ class CommonTest(unittest.TestCase):
fp.write('apksigner: ' + teststr) fp.write('apksigner: ' + teststr)
self.assertTrue(os.path.exists('config.yml')) self.assertTrue(os.path.exists('config.yml'))
self.assertFalse(os.path.exists('config.py')) self.assertFalse(os.path.exists('config.py'))
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertEqual(teststr, config.get('apksigner')) self.assertEqual(teststr, config.get('apksigner'))
def test_with_config_yml_utf8_as_ascii(self): def test_with_config_yml_utf8_as_ascii(self):
@ -1979,7 +1924,7 @@ class CommonTest(unittest.TestCase):
yaml.dump({'apksigner': teststr}, fp) yaml.dump({'apksigner': teststr}, fp)
self.assertTrue(os.path.exists('config.yml')) self.assertTrue(os.path.exists('config.yml'))
self.assertFalse(os.path.exists('config.py')) self.assertFalse(os.path.exists('config.py'))
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertEqual(teststr, config.get('apksigner')) self.assertEqual(teststr, config.get('apksigner'))
def test_with_config_yml_with_env_var(self): def test_with_config_yml_with_env_var(self):
@ -1991,20 +1936,20 @@ class CommonTest(unittest.TestCase):
fp.write("""keypass: {'env': 'SECRET'}""") fp.write("""keypass: {'env': 'SECRET'}""")
self.assertTrue(os.path.exists('config.yml')) self.assertTrue(os.path.exists('config.yml'))
self.assertFalse(os.path.exists('config.py')) self.assertFalse(os.path.exists('config.py'))
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertEqual(os.getenv('SECRET', 'fail'), config.get('keypass')) self.assertEqual(os.getenv('SECRET', 'fail'), config.get('keypass'))
def test_with_config_yml_is_dict(self): def test_with_config_yml_is_dict(self):
os.chdir(self.tmpdir) os.chdir(self.tmpdir)
Path('config.yml').write_text('apksigner = /placeholder/path') Path('config.yml').write_text('apksigner = /placeholder/path')
with self.assertRaises(TypeError): with self.assertRaises(TypeError):
fdroidserver.common.read_config() fdroidserver.common.read_config(fdroidserver.common.options)
def test_with_config_yml_is_not_mixed_type(self): def test_with_config_yml_is_not_mixed_type(self):
os.chdir(self.tmpdir) os.chdir(self.tmpdir)
Path('config.yml').write_text('k: v\napksigner = /placeholder/path') Path('config.yml').write_text('k: v\napksigner = /placeholder/path')
with self.assertRaises(yaml.scanner.ScannerError): with self.assertRaises(yaml.scanner.ScannerError):
fdroidserver.common.read_config() fdroidserver.common.read_config(fdroidserver.common.options)
def test_with_config_py(self): def test_with_config_py(self):
"""Make sure it is still possible to use config.py alone.""" """Make sure it is still possible to use config.py alone."""
@ -2013,7 +1958,7 @@ class CommonTest(unittest.TestCase):
fp.write('apksigner = "py"') fp.write('apksigner = "py"')
self.assertFalse(os.path.exists('config.yml')) self.assertFalse(os.path.exists('config.yml'))
self.assertTrue(os.path.exists('config.py')) self.assertTrue(os.path.exists('config.py'))
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertEqual("py", config.get('apksigner')) self.assertEqual("py", config.get('apksigner'))
def test_config_perm_warning(self): def test_config_perm_warning(self):
@ -2023,7 +1968,7 @@ class CommonTest(unittest.TestCase):
fp.write('keystore: foo.jks') fp.write('keystore: foo.jks')
self.assertTrue(os.path.exists(fp.name)) self.assertTrue(os.path.exists(fp.name))
os.chmod(fp.name, 0o666) os.chmod(fp.name, 0o666)
fdroidserver.common.read_config() fdroidserver.common.read_config(fdroidserver.common.options)
os.remove(fp.name) os.remove(fp.name)
fdroidserver.common.config = None fdroidserver.common.config = None
@ -2031,7 +1976,7 @@ class CommonTest(unittest.TestCase):
fp.write('keystore = "foo.jks"') fp.write('keystore = "foo.jks"')
self.assertTrue(os.path.exists(fp.name)) self.assertTrue(os.path.exists(fp.name))
os.chmod(fp.name, 0o666) os.chmod(fp.name, 0o666)
fdroidserver.common.read_config() fdroidserver.common.read_config(fdroidserver.common.options)
def test_with_both_config_yml_py(self): def test_with_both_config_yml_py(self):
"""If config.yml and config.py are present, config.py should be ignored.""" """If config.yml and config.py are present, config.py should be ignored."""
@ -2042,7 +1987,7 @@ class CommonTest(unittest.TestCase):
fp.write('apksigner = "py"') fp.write('apksigner = "py"')
self.assertTrue(os.path.exists('config.yml')) self.assertTrue(os.path.exists('config.yml'))
self.assertTrue(os.path.exists('config.py')) self.assertTrue(os.path.exists('config.py'))
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertEqual('yml', config.get('apksigner')) self.assertEqual('yml', config.get('apksigner'))
def test_config_repo_url(self): def test_config_repo_url(self):
@ -2093,14 +2038,14 @@ class CommonTest(unittest.TestCase):
fp.write('apksigner: yml') fp.write('apksigner: yml')
self.assertTrue(os.path.exists(fp.name)) self.assertTrue(os.path.exists(fp.name))
self.assertFalse(os.path.exists('config.py')) self.assertFalse(os.path.exists('config.py'))
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertFalse('keypass' in config) self.assertFalse('keypass' in config)
self.assertEqual('yml', config.get('apksigner')) self.assertEqual('yml', config.get('apksigner'))
fdroidserver.common.write_to_config(config, 'keypass', 'mysecretpassword') fdroidserver.common.write_to_config(config, 'keypass', 'mysecretpassword')
with open(fp.name) as fp: with open(fp.name) as fp:
print(fp.read()) print(fp.read())
fdroidserver.common.config = None fdroidserver.common.config = None
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertEqual('mysecretpassword', config['keypass']) self.assertEqual('mysecretpassword', config['keypass'])
def test_write_to_config_py(self): def test_write_to_config_py(self):
@ -2109,12 +2054,12 @@ class CommonTest(unittest.TestCase):
fp.write('apksigner = "py"') fp.write('apksigner = "py"')
self.assertTrue(os.path.exists(fp.name)) self.assertTrue(os.path.exists(fp.name))
self.assertFalse(os.path.exists('config.yml')) self.assertFalse(os.path.exists('config.yml'))
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertFalse('keypass' in config) self.assertFalse('keypass' in config)
self.assertEqual('py', config.get('apksigner')) self.assertEqual('py', config.get('apksigner'))
fdroidserver.common.write_to_config(config, 'keypass', 'mysecretpassword') fdroidserver.common.write_to_config(config, 'keypass', 'mysecretpassword')
fdroidserver.common.config = None fdroidserver.common.config = None
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertEqual('mysecretpassword', config['keypass']) self.assertEqual('mysecretpassword', config['keypass'])
def test_config_dict_with_int_keys(self): def test_config_dict_with_int_keys(self):
@ -2123,7 +2068,7 @@ class CommonTest(unittest.TestCase):
fp.write('java_paths:\n 8: /usr/lib/jvm/java-8-openjdk\n') fp.write('java_paths:\n 8: /usr/lib/jvm/java-8-openjdk\n')
self.assertTrue(os.path.exists(fp.name)) self.assertTrue(os.path.exists(fp.name))
self.assertFalse(os.path.exists('config.py')) self.assertFalse(os.path.exists('config.py'))
config = fdroidserver.common.read_config() config = fdroidserver.common.read_config(fdroidserver.common.options)
self.assertEqual('/usr/lib/jvm/java-8-openjdk', config.get('java_paths', {}).get('8')) self.assertEqual('/usr/lib/jvm/java-8-openjdk', config.get('java_paths', {}).get('8'))
@mock.patch.dict(os.environ, {'PATH': os.getenv('PATH')}, clear=True) @mock.patch.dict(os.environ, {'PATH': os.getenv('PATH')}, clear=True)
@ -2201,7 +2146,7 @@ class CommonTest(unittest.TestCase):
shutil.copy(os.path.join(self.basedir, '..', 'buildserver', 'config.buildserver.yml'), shutil.copy(os.path.join(self.basedir, '..', 'buildserver', 'config.buildserver.yml'),
'config.yml') 'config.yml')
self.assertFalse(os.path.exists('config.py')) self.assertFalse(os.path.exists('config.py'))
fdroidserver.common.read_config() fdroidserver.common.read_config(fdroidserver.common.options)
def test_setup_status_output(self): def test_setup_status_output(self):
os.chdir(self.tmpdir) os.chdir(self.tmpdir)
@ -2554,7 +2499,6 @@ class CommonTest(unittest.TestCase):
@mock.patch.dict(os.environ, clear=True) @mock.patch.dict(os.environ, clear=True)
def test_FDroidPopen_envs_paths_can_be_pathlib(self): def test_FDroidPopen_envs_paths_can_be_pathlib(self):
_mock_common_module_options_instance()
os.environ['PATH'] = '/usr/bin:/usr/sbin' os.environ['PATH'] = '/usr/bin:/usr/sbin'
envs = {'PATHLIB': Path('/pathlib/path'), 'STRING': '/string/path'} envs = {'PATHLIB': Path('/pathlib/path'), 'STRING': '/string/path'}
p = fdroidserver.common.FDroidPopen(['/bin/sh', '-c', 'export'], envs=envs) p = fdroidserver.common.FDroidPopen(['/bin/sh', '-c', 'export'], envs=envs)
@ -2948,394 +2892,19 @@ class CommonTest(unittest.TestCase):
fdroidserver.common.read_config()['serverwebroot'], fdroidserver.common.read_config()['serverwebroot'],
) )
def test_parse_mirrors_config_str(self):
s = 'foo@example.com:/var/www'
mirrors = ruamel.yaml.YAML(typ='safe').load("""'%s'""" % s)
self.assertEqual(
[{'url': s}], fdroidserver.common.parse_mirrors_config(mirrors)
)
def test_parse_mirrors_config_list(self):
s = 'foo@example.com:/var/www'
mirrors = ruamel.yaml.YAML(typ='safe').load("""- '%s'""" % s)
self.assertEqual(
[{'url': s}], fdroidserver.common.parse_mirrors_config(mirrors)
)
def test_parse_mirrors_config_dict(self):
s = 'foo@example.com:/var/www'
mirrors = ruamel.yaml.YAML(typ='safe').load("""- url: '%s'""" % s)
self.assertEqual(
[{'url': s}], fdroidserver.common.parse_mirrors_config(mirrors)
)
APKS_WITH_JAR_SIGNATURES = (
(
'SpeedoMeterApp.main_1.apk',
'2e6b3126fb7e0db6a9d4c2a06df690620655454d6e152cf244cc9efe9787a77d',
),
(
'apk.embedded_1.apk',
'764f0eaac0cdcde35023658eea865c4383ab580f9827c62fdd3daf9e654199ee',
),
(
'bad-unicode-πÇÇ现代通用字-български-عربي1.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'issue-1128-poc3a.apk',
'1dbb8be012293e988a0820f7d455b07abd267d2c0b500fc793fcfd80141cb5ce',
),
(
'issue-1128-poc3b.apk',
'1dbb8be012293e988a0820f7d455b07abd267d2c0b500fc793fcfd80141cb5ce',
),
(
'janus.apk',
'ebb0fedf1942a099b287c3db00ff732162152481abb2b6c7cbcdb2ba5894a768',
),
(
'org.bitbucket.tickytacky.mirrormirror_1.apk',
'feaa63df35b4635cf091513dfcd6d11209632555efdfc47e33b70d4e4eb5ba28',
),
(
'org.bitbucket.tickytacky.mirrormirror_2.apk',
'feaa63df35b4635cf091513dfcd6d11209632555efdfc47e33b70d4e4eb5ba28',
),
(
'org.bitbucket.tickytacky.mirrormirror_3.apk',
'feaa63df35b4635cf091513dfcd6d11209632555efdfc47e33b70d4e4eb5ba28',
),
(
'org.bitbucket.tickytacky.mirrormirror_4.apk',
'feaa63df35b4635cf091513dfcd6d11209632555efdfc47e33b70d4e4eb5ba28',
),
(
'org.dyndns.fules.ck_20.apk',
'9326a2cc1a2f148202bc7837a0af3b81200bd37fd359c9e13a2296a71d342056',
),
(
'org.sajeg.fallingblocks_3.apk',
'033389681f4288fdb3e72a28058c8506233ca50de75452ab6c9c76ea1ca2d70f',
),
(
'repo/com.example.test.helloworld_1.apk',
'c3a5ca5465a7585a1bda30218ae4017083605e3576867aa897d724208d99696c',
),
(
'repo/com.politedroid_3.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'repo/com.politedroid_4.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'repo/com.politedroid_5.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'repo/com.politedroid_6.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'repo/duplicate.permisssions_9999999.apk',
'659e1fd284549f70d13fb02c620100e27eeea3420558cce62b0f5d4cf2b77d84',
),
(
'repo/info.zwanenburg.caffeinetile_4.apk',
'51cfa5c8a743833ad89acf81cb755936876a5c8b8eca54d1ffdcec0cdca25d0e',
),
(
'repo/no.min.target.sdk_987.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'repo/obb.main.oldversion_1444412523.apk',
'818e469465f96b704e27be2fee4c63ab9f83ddf30e7a34c7371a4728d83b0bc1',
),
(
'repo/obb.main.twoversions_1101613.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'repo/obb.main.twoversions_1101615.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'repo/obb.main.twoversions_1101617.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'repo/obb.mainpatch.current_1619.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'repo/obb.mainpatch.current_1619_another-release-key.apk',
'ce9e200667f02d96d49891a2e08a3c178870e91853d61bdd33ef5f0b54701aa5',
),
(
'repo/souch.smsbypass_9.apk',
'd3aec784b1fd71549fc22c999789122e3639895db6bd585da5835fbe3db6985c',
),
(
'repo/urzip-; Рахма́, [rɐxˈmanʲɪnəf] سيرجي_رخمانينوف 谢·.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'repo/v1.v2.sig_1020.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'urzip-release.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
(
'urzip.apk',
'7eabd8c15de883d1e82b5df2fd4f7f769e498078e9ad6dc901f0e96db77ceac3',
),
)
APKS_WITHOUT_JAR_SIGNATURES = (
(
'issue-1128-poc1.apk', # APK v3 Signature only
'1dbb8be012293e988a0820f7d455b07abd267d2c0b500fc793fcfd80141cb5ce',
),
(
'issue-1128-poc2.apk', # APK v3 Signature only
'1dbb8be012293e988a0820f7d455b07abd267d2c0b500fc793fcfd80141cb5ce',
),
(
'issue-1128-min-sdk-30-poc.apk', # APK v3 Signature only
'09350d5f3460a8a0ea5cf6b68ccd296a58754f7e683ba6aa08c19be8353504f3',
),
(
'v2.only.sig_2.apk',
'32a23624c201b949f085996ba5ed53d40f703aca4989476949cae891022e0ed6',
),
)
class SignerExtractionTest(unittest.TestCase):
"""Test extraction of the signer certificate from JARs and APKs
These fingerprints can be confirmed with:
apksigner verify --print-certs foo.apk | grep SHA-256
keytool -printcert -file ____.RSA
"""
def setUp(self):
os.chdir(os.path.join(localmodule, 'tests'))
self._td = mkdtemp()
self.testdir = self._td.name
self.apksigner = shutil.which('apksigner')
self.keytool = shutil.which('keytool')
def tearDown(self):
self._td.cleanup()
def test_get_first_signer_certificate_with_jars(self):
for jar in (
'signindex/guardianproject-v1.jar',
'signindex/guardianproject.jar',
'signindex/testy.jar',
):
outdir = os.path.join(self.testdir, jar[:-4].replace('/', '_'))
os.mkdir(outdir)
fdroidserver.common.apk_extract_signatures(jar, outdir)
certs = glob.glob(os.path.join(outdir, '*.RSA'))
with open(certs[0], 'rb') as fp:
self.assertEqual(
fdroidserver.common.get_certificate(fp.read()),
fdroidserver.common.get_first_signer_certificate(jar),
)
@unittest.skip("slow and only needed when adding to APKS_WITH_JAR_SIGNATURES")
def test_vs_keytool(self):
unittest.skipUnless(self.keytool, 'requires keytool to run')
pat = re.compile(r'[0-9A-F:]{95}')
cmd = [self.keytool, '-printcert', '-jarfile']
for apk, fingerprint in APKS_WITH_JAR_SIGNATURES:
o = subprocess.check_output(cmd + [apk], text=True)
try:
self.assertEqual(
fingerprint,
pat.search(o).group().replace(':', '').lower(),
)
except AttributeError as e:
print(e, o)
@unittest.skip("slow and only needed when adding to APKS_WITH_JAR_SIGNATURES")
def test_vs_apksigner(self):
unittest.skipUnless(self.apksigner, 'requires apksigner to run')
pat = re.compile(r'\s[0-9a-f]{64}\s')
cmd = [self.apksigner, 'verify', '--print-certs']
for apk, fingerprint in APKS_WITH_JAR_SIGNATURES + APKS_WITHOUT_JAR_SIGNATURES:
output = subprocess.check_output(cmd + [apk], text=True)
self.assertEqual(
fingerprint,
pat.search(output).group().strip(),
apk + " should have matching signer fingerprints",
)
def test_apk_signer_fingerprint_with_v1_apks(self):
for apk, fingerprint in APKS_WITH_JAR_SIGNATURES:
self.assertEqual(
fingerprint,
fdroidserver.common.apk_signer_fingerprint(apk),
f'apk_signer_fingerprint should match stored fingerprint for {apk}',
)
def test_apk_signer_fingerprint_without_v1_apks(self):
for apk, fingerprint in APKS_WITHOUT_JAR_SIGNATURES:
self.assertEqual(
fingerprint,
fdroidserver.common.apk_signer_fingerprint(apk),
f'apk_signer_fingerprint should match stored fingerprint for {apk}',
)
def test_get_first_signer_certificate_with_unsigned_jar(self):
self.assertIsNone(
fdroidserver.common.get_first_signer_certificate('signindex/unsigned.jar')
)
def test_apk_extract_fingerprint(self):
"""Test extraction of JAR signatures (does not cover APK v2+ extraction)."""
for apk, fingerprint in APKS_WITH_JAR_SIGNATURES:
outdir = os.path.join(self.testdir, apk[:-4].replace('/', '_'))
os.mkdir(outdir)
try:
fdroidserver.common.apk_extract_signatures(apk, outdir)
except fdroidserver.apksigcopier.APKSigCopierError:
# nothing to test here when this error is thrown
continue
v1_certs = [str(cert) for cert in Path(outdir).glob('*.[DR]SA')]
cert = fdroidserver.common.get_certificate(
signature_block_file=Path(v1_certs[0]).read_bytes(),
signature_file=Path(v1_certs[0][:-4] + '.SF').read_bytes(),
)
self.assertEqual(
fingerprint,
fdroidserver.common.signer_fingerprint(cert),
)
apkobject = fdroidserver.common.get_androguard_APK(apk, skip_analysis=True)
v2_certs = apkobject.get_certificates_der_v2()
if v2_certs:
if v1_certs:
self.assertEqual(len(v1_certs), len(v2_certs))
self.assertEqual(
fingerprint,
fdroidserver.common.signer_fingerprint(v2_certs[0]),
)
v3_certs = apkobject.get_certificates_der_v3()
if v3_certs:
if v2_certs:
self.assertEqual(len(v2_certs), len(v3_certs))
self.assertEqual(
fingerprint,
fdroidserver.common.signer_fingerprint(v3_certs[0]),
)
class ConfigOptionsScopeTest(unittest.TestCase):
"""Test assumptions about variable scope for "config" and "options".
The ancient architecture of config and options in fdroidserver has
weird issues around unexpected scope, like there are cases where
the global config is not the same as the module-level config, and
more.
This is about describing what is happening, it is not about
documenting behaviors that are good design. The config and options
handling should really be refactored into a well-known, workable
Pythonic pattern.
"""
def setUp(self):
# these are declared as None at the top of the module file
fdroidserver.common.config = None
fdroidserver.common.options = None
def tearDown(self):
fdroidserver.common.config = None
fdroidserver.common.options = None
if 'config' in globals():
global config
del config
if 'options' in globals():
global options
del options
def test_parse_args(self):
"""Test that options is properly set up at the module-level and not global."""
self.assertFalse('options' in globals())
self.assertIsNone(fdroidserver.common.options)
parser = ArgumentParser()
fdroidserver.common.setup_global_opts(parser)
with mock.patch('sys.argv', ['$0']):
o = fdroidserver.common.parse_args(parser)
self.assertEqual(o, fdroidserver.common.options)
# No function should set options as a global, and the global
# keyword does not create the variable.
global options
with self.assertRaises(NameError):
options
self.assertFalse('options' in globals())
def test_parse_args_without_args(self):
"""Test that the parsing function works fine when there are no args."""
parser = ArgumentParser()
fdroidserver.common.setup_global_opts(parser)
with mock.patch('sys.argv', ['$0']):
o = fdroidserver.common.parse_args(parser)
self.assertFalse(o.verbose)
def test_parse_args_with_args(self):
parser = ArgumentParser()
fdroidserver.common.setup_global_opts(parser)
with mock.patch('sys.argv', ['$0', '-v']):
o = fdroidserver.common.parse_args(parser)
self.assertTrue(o.verbose)
def test_get_config(self):
"""Show how the module-level variables are initialized."""
self.assertTrue('config' not in vars() and 'config' not in globals())
self.assertIsNone(fdroidserver.common.config)
config = fdroidserver.common.read_config()
self.assertIsNotNone(fdroidserver.common.config)
self.assertEqual(dict, type(config))
self.assertEqual(config, fdroidserver.common.config)
def test_get_config_global(self):
"""Test assumptions about variable scope using global keyword."""
global config
self.assertTrue('config' not in vars() and 'config' not in globals())
self.assertIsNone(fdroidserver.common.config)
c = fdroidserver.common.read_config()
self.assertIsNotNone(fdroidserver.common.config)
self.assertEqual(dict, type(c))
self.assertEqual(c, fdroidserver.common.config)
self.assertTrue(
'config' not in vars() and 'config' not in globals(),
"The config should not be set in the global context, only module-level.",
)
if __name__ == "__main__": if __name__ == "__main__":
os.chdir(os.path.dirname(__file__)) os.chdir(os.path.dirname(__file__))
parser = ArgumentParser() parser = optparse.OptionParser()
parser.add_argument( parser.add_option(
"-v", "-v",
"--verbose", "--verbose",
action="store_true", action="store_true",
default=False, default=False,
help="Spew out even more information than normal", help="Spew out even more information than normal",
) )
parse_args_for_test(parser, sys.argv) (fdroidserver.common.options, args) = parser.parse_args(['--verbose'])
newSuite = unittest.TestSuite() newSuite = unittest.TestSuite()
newSuite.addTest(unittest.makeSuite(CommonTest)) newSuite.addTest(unittest.makeSuite(CommonTest))

View File

@ -1,10 +1,9 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import configparser
import inspect import inspect
import logging import logging
import optparse
import os import os
import shutil
import sys import sys
import tempfile import tempfile
import unittest import unittest
@ -22,12 +21,7 @@ if localmodule not in sys.path:
import fdroidserver.common import fdroidserver.common
import fdroidserver.deploy import fdroidserver.deploy
from fdroidserver.exception import FDroidException from fdroidserver.exception import FDroidException
from testcommon import TmpCwd, mkdtemp, parse_args_for_test from testcommon import TmpCwd, mkdtemp
class Options:
quiet = False
verbose = False
class DeployTest(unittest.TestCase): class DeployTest(unittest.TestCase):
@ -40,10 +34,6 @@ class DeployTest(unittest.TestCase):
self._td = mkdtemp() self._td = mkdtemp()
self.testdir = self._td.name self.testdir = self._td.name
fdroidserver.common.options = mock.Mock()
fdroidserver.deploy.config = {}
fdroidserver.deploy.USER_RCLONE_CONF = False
def tearDown(self): def tearDown(self):
self._td.cleanup() self._td.cleanup()
@ -73,7 +63,7 @@ class DeployTest(unittest.TestCase):
url1.mkdir(parents=True) url1.mkdir(parents=True)
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
fdroidserver.deploy.config['make_current_version_link'] = False fdroidserver.deploy.config['make_current_version_link'] = False
dest_apk0 = url0 / fake_apk dest_apk0 = url0 / fake_apk
@ -104,96 +94,6 @@ class DeployTest(unittest.TestCase):
with self.assertRaises(SystemExit): with self.assertRaises(SystemExit):
fdroidserver.deploy.update_serverwebroots([{'url': 'ssh://nope'}], 'repo') fdroidserver.deploy.update_serverwebroots([{'url': 'ssh://nope'}], 'repo')
@unittest.skipUnless(shutil.which('rclone'), '/usr/bin/rclone')
def test_update_remote_storage_with_rclone(self):
os.chdir(self.testdir)
repo = Path('repo')
repo.mkdir(parents=True, exist_ok=True)
fake_apk = repo / 'another_fake.apk'
with fake_apk.open('w') as fp:
fp.write('not an APK, but has the right filename')
fake_index = repo / fdroidserver.deploy.INDEX_FILES[0]
with fake_index.open('w') as fp:
fp.write('not an index, but has the right filename')
# write out rclone config for test use
rclone_config = configparser.ConfigParser()
rclone_config.add_section("test-local-config")
rclone_config.set("test-local-config", "type", "local")
rclone_config_path = Path('rclone_config_path')
rclone_config_path.mkdir(parents=True, exist_ok=True)
rclone_file = rclone_config_path / 'rclone.conf'
with open(rclone_file, 'w') as configfile:
rclone_config.write(configfile)
# setup parameters for this test run
fdroidserver.deploy.config['awsbucket'] = 'test_bucket_folder'
fdroidserver.deploy.config['rclone'] = True
fdroidserver.deploy.config['rclone_config'] = 'test-local-config'
fdroidserver.deploy.config['path_to_custom_rclone_config'] = str(rclone_file)
fdroidserver.common.options = Options
# write out destination path
destination = Path('some_bucket_folder/fdroid')
destination.mkdir(parents=True, exist_ok=True)
dest_apk = Path(destination) / fake_apk
dest_index = Path(destination) / fake_index
self.assertFalse(dest_apk.is_file())
self.assertFalse(dest_index.is_file())
repo_section = str(repo)
# fdroidserver.deploy.USER_RCLONE_CONF = str(rclone_file)
fdroidserver.deploy.update_remote_storage_with_rclone(repo_section)
self.assertTrue(dest_apk.is_file())
self.assertTrue(dest_index.is_file())
@unittest.skipUnless(shutil.which('rclone'), '/usr/bin/rclone')
def test_update_remote_storage_with_rclone_in_index_only_mode(self):
os.chdir(self.testdir)
repo = Path('repo')
repo.mkdir(parents=True, exist_ok=True)
fake_apk = repo / 'another_fake.apk'
with fake_apk.open('w') as fp:
fp.write('not an APK, but has the right filename')
fake_index = repo / fdroidserver.deploy.INDEX_FILES[0]
with fake_index.open('w') as fp:
fp.write('not an index, but has the right filename')
# write out rclone config for test use
rclone_config = configparser.ConfigParser()
rclone_config.add_section("test-local-config")
rclone_config.set("test-local-config", "type", "local")
rclone_config_path = Path('rclone_config_path')
rclone_config_path.mkdir(parents=True, exist_ok=True)
rclone_file = rclone_config_path / 'rclone.conf'
with open(rclone_file, 'w') as configfile:
rclone_config.write(configfile)
# setup parameters for this test run
fdroidserver.deploy.config['awsbucket'] = 'test_bucket_folder'
fdroidserver.deploy.config['rclone'] = True
fdroidserver.deploy.config['rclone_config'] = 'test-local-config'
fdroidserver.deploy.config['path_to_custom_rclone_config'] = str(rclone_file)
fdroidserver.common.options = Options
# write out destination path
destination = Path('some_bucket_folder/fdroid')
destination.mkdir(parents=True, exist_ok=True)
dest_apk = Path(destination) / fake_apk
dest_index = Path(destination) / fake_index
self.assertFalse(dest_apk.is_file())
self.assertFalse(dest_index.is_file())
repo_section = str(repo)
# fdroidserver.deploy.USER_RCLONE_CONF = str(rclone_file)
fdroidserver.deploy.update_remote_storage_with_rclone(
repo_section, is_index_only=True
)
self.assertFalse(dest_apk.is_file())
self.assertTrue(dest_index.is_file())
def test_update_serverwebroot(self): def test_update_serverwebroot(self):
"""rsync works with file paths, so this test uses paths for the URLs""" """rsync works with file paths, so this test uses paths for the URLs"""
os.chdir(self.testdir) os.chdir(self.testdir)
@ -209,9 +109,7 @@ class DeployTest(unittest.TestCase):
url.mkdir() url.mkdir()
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options.identity_file = None
fdroidserver.common.options.identity_file = None
fdroidserver.common.options.identity_file = None
fdroidserver.deploy.config['make_current_version_link'] = False fdroidserver.deploy.config['make_current_version_link'] = False
dest_apk = Path(url) / fake_apk dest_apk = Path(url) / fake_apk
@ -230,15 +128,16 @@ class DeployTest(unittest.TestCase):
fake_apk = repo / 'fake.apk' fake_apk = repo / 'fake.apk'
with fake_apk.open('w') as fp: with fake_apk.open('w') as fp:
fp.write('not an APK, but has the right filename') fp.write('not an APK, but has the right filename')
fake_index = repo / fdroidserver.deploy.INDEX_FILES[0] for i in fdroidserver.deploy.INDEX_FILES:
with fake_index.open('w') as fp: fake_index = repo / i
fp.write('not an index, but has the right filename') with fake_index.open('w') as fp:
fp.write('not an index, but has the right filename')
url = Path('url') url = Path('url')
url.mkdir() url.mkdir()
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
fdroidserver.deploy.config['make_current_version_link'] = False fdroidserver.deploy.config['make_current_version_link'] = False
dest_apk = Path(url) / fake_apk dest_apk = Path(url) / fake_apk
@ -260,16 +159,14 @@ class DeployTest(unittest.TestCase):
fdroidserver.deploy.update_serverwebroot('serverwebroot', 'repo') fdroidserver.deploy.update_serverwebroot('serverwebroot', 'repo')
def test_update_serverwebroot_make_cur_version_link(self): def test_update_serverwebroot_make_cur_version_link(self):
self.maxDiff = None
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.no_checksum = True fdroidserver.deploy.options.no_checksum = True
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
fdroidserver.common.options.verbose = False fdroidserver.deploy.options.verbose = False
fdroidserver.common.options.quiet = True fdroidserver.deploy.options.quiet = True
fdroidserver.common.options.index_only = False fdroidserver.deploy.options.identity_file = None
fdroidserver.deploy.config = {'make_current_version_link': True} fdroidserver.deploy.config['make_current_version_link'] = True
url = "example.com:/var/www/fdroid" url = "example.com:/var/www/fdroid"
repo_section = 'repo' repo_section = 'repo'
@ -288,8 +185,6 @@ class DeployTest(unittest.TestCase):
'--safe-links', '--safe-links',
'--quiet', '--quiet',
'--exclude', '--exclude',
'repo/altstore-index.json',
'--exclude',
'repo/entry.jar', 'repo/entry.jar',
'--exclude', '--exclude',
'repo/entry.json', 'repo/entry.json',
@ -357,12 +252,12 @@ class DeployTest(unittest.TestCase):
def test_update_serverwebroot_make_cur_version_link_in_index_only_mode(self): def test_update_serverwebroot_make_cur_version_link_in_index_only_mode(self):
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.no_checksum = True fdroidserver.deploy.options.no_checksum = True
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
fdroidserver.common.options.verbose = False fdroidserver.deploy.options.verbose = False
fdroidserver.common.options.quiet = True fdroidserver.deploy.options.quiet = True
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
fdroidserver.deploy.config['make_current_version_link'] = True fdroidserver.deploy.config['make_current_version_link'] = True
url = "example.com:/var/www/fdroid" url = "example.com:/var/www/fdroid"
repo_section = 'repo' repo_section = 'repo'
@ -381,7 +276,6 @@ class DeployTest(unittest.TestCase):
'--delete-after', '--delete-after',
'--safe-links', '--safe-links',
'--quiet', '--quiet',
'repo/altstore-index.json',
'repo/entry.jar', 'repo/entry.jar',
'repo/entry.json', 'repo/entry.json',
'repo/entry.json.asc', 'repo/entry.json.asc',
@ -441,14 +335,14 @@ class DeployTest(unittest.TestCase):
def test_update_serverwebroot_with_id_file(self): def test_update_serverwebroot_with_id_file(self):
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
fdroidserver.common.options.no_checksum = True fdroidserver.deploy.options.no_checksum = True
fdroidserver.common.options.verbose = True fdroidserver.deploy.options.verbose = True
fdroidserver.common.options.quiet = False fdroidserver.deploy.options.quiet = False
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
fdroidserver.common.options.index_only = False fdroidserver.deploy.config['identity_file'] = './id_rsa'
fdroidserver.deploy.config = {'identity_file': './id_rsa'} fdroidserver.deploy.config['make_current_version_link'] = False
url = "example.com:/var/www/fdroid" url = "example.com:/var/www/fdroid"
repo_section = 'archive' repo_section = 'archive'
@ -470,8 +364,6 @@ class DeployTest(unittest.TestCase):
'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i '
+ fdroidserver.deploy.config['identity_file'], + fdroidserver.deploy.config['identity_file'],
'--exclude', '--exclude',
'archive/altstore-index.json',
'--exclude',
'archive/entry.jar', 'archive/entry.jar',
'--exclude', '--exclude',
'archive/entry.json', 'archive/entry.json',
@ -522,11 +414,11 @@ class DeployTest(unittest.TestCase):
def test_update_serverwebroot_with_id_file_in_index_only_mode(self): def test_update_serverwebroot_with_id_file_in_index_only_mode(self):
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.no_chcksum = False fdroidserver.deploy.options.no_chcksum = False
fdroidserver.common.options.verbose = True fdroidserver.deploy.options.verbose = True
fdroidserver.common.options.quiet = False fdroidserver.deploy.options.quiet = False
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
fdroidserver.deploy.config['identity_file'] = './id_rsa' fdroidserver.deploy.config['identity_file'] = './id_rsa'
fdroidserver.deploy.config['make_current_version_link'] = False fdroidserver.deploy.config['make_current_version_link'] = False
url = "example.com:/var/www/fdroid" url = "example.com:/var/www/fdroid"
@ -549,7 +441,6 @@ class DeployTest(unittest.TestCase):
'-e', '-e',
'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i '
+ fdroidserver.deploy.config['identity_file'], + fdroidserver.deploy.config['identity_file'],
'archive/altstore-index.json',
'archive/entry.jar', 'archive/entry.jar',
'archive/entry.json', 'archive/entry.json',
'archive/entry.json.asc', 'archive/entry.json.asc',
@ -593,8 +484,8 @@ class DeployTest(unittest.TestCase):
not os.getenv('VIRUSTOTAL_API_KEY'), 'VIRUSTOTAL_API_KEY is not set' not os.getenv('VIRUSTOTAL_API_KEY'), 'VIRUSTOTAL_API_KEY is not set'
) )
def test_upload_to_virustotal(self): def test_upload_to_virustotal(self):
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.verbose = True fdroidserver.deploy.options.verbose = True
virustotal_apikey = os.getenv('VIRUSTOTAL_API_KEY') virustotal_apikey = os.getenv('VIRUSTOTAL_API_KEY')
fdroidserver.deploy.upload_to_virustotal('repo', virustotal_apikey) fdroidserver.deploy.upload_to_virustotal('repo', virustotal_apikey)
@ -612,10 +503,10 @@ class DeployTest(unittest.TestCase):
def test_update_awsbucket_s3cmd(self): def test_update_awsbucket_s3cmd(self):
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.no_checksum = True fdroidserver.deploy.options.no_checksum = True
fdroidserver.common.options.verbose = False fdroidserver.deploy.options.verbose = False
fdroidserver.common.options.quiet = True fdroidserver.deploy.options.quiet = True
config = {} config = {}
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
@ -652,8 +543,6 @@ class DeployTest(unittest.TestCase):
'--acl-public', '--acl-public',
'--quiet', '--quiet',
'--exclude', '--exclude',
'repo/altstore-index.json',
'--exclude',
'repo/entry.jar', 'repo/entry.jar',
'--exclude', '--exclude',
'repo/entry.json', 'repo/entry.json',
@ -689,8 +578,6 @@ class DeployTest(unittest.TestCase):
'--acl-public', '--acl-public',
'--quiet', '--quiet',
'--exclude', '--exclude',
'repo/altstore-index.json',
'--exclude',
'repo/entry.jar', 'repo/entry.jar',
'--exclude', '--exclude',
'repo/entry.json', 'repo/entry.json',
@ -747,10 +634,10 @@ class DeployTest(unittest.TestCase):
def test_update_awsbucket_s3cmd_in_index_only_mode(self): def test_update_awsbucket_s3cmd_in_index_only_mode(self):
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.no_checksum = True fdroidserver.deploy.options.no_checksum = True
fdroidserver.common.options.verbose = False fdroidserver.deploy.options.verbose = False
fdroidserver.common.options.quiet = True fdroidserver.deploy.options.quiet = True
config = {} config = {}
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
@ -787,8 +674,6 @@ class DeployTest(unittest.TestCase):
'--acl-public', '--acl-public',
'--quiet', '--quiet',
'--include', '--include',
'repo/altstore-index.json',
'--include',
'repo/entry.jar', 'repo/entry.jar',
'--include', '--include',
'repo/entry.json', 'repo/entry.json',
@ -827,7 +712,7 @@ class DeployTest(unittest.TestCase):
os.symlink('repo/com.example.sym.apk.sig', 'Sym.apk.sig') os.symlink('repo/com.example.sym.apk.sig', 'Sym.apk.sig')
with mock.patch('subprocess.call', side_effect=update_awsbucket_s3cmd_call): with mock.patch('subprocess.call', side_effect=update_awsbucket_s3cmd_call):
fdroidserver.deploy.update_awsbucket_s3cmd( fdroidserver.deploy.update_awsbucket_s3cmd(
repo_section, is_index_only=True repo_section, index_only=True
) )
self.assertEqual(call_iteration, 2, 'expected 2 invocations of subprocess.call') self.assertEqual(call_iteration, 2, 'expected 2 invocations of subprocess.call')
@ -835,10 +720,10 @@ class DeployTest(unittest.TestCase):
from libcloud.storage.base import Container from libcloud.storage.base import Container
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.no_checksum = True fdroidserver.deploy.options.no_checksum = True
fdroidserver.common.options.verbose = False fdroidserver.deploy.options.verbose = False
fdroidserver.common.options.quiet = True fdroidserver.deploy.options.quiet = True
config = {} config = {}
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
@ -879,10 +764,7 @@ class DeployTest(unittest.TestCase):
container_name=fdroidserver.deploy.config["awsbucket"] container_name=fdroidserver.deploy.config["awsbucket"]
) )
mock_container.list_objects.assert_called_once_with() mock_container.list_objects.assert_called_once_with()
files_to_upload = [ files_to_upload = ['fdroid/repo/Sym.apk', 'fdroid/repo/entry.jar']
'fdroid/repo/Sym.apk',
f"fdroid/repo/{fdroidserver.deploy.INDEX_FILES[0]}",
]
calls = [ calls = [
mock.call( mock.call(
iterator=mock.ANY, iterator=mock.ANY,
@ -899,10 +781,10 @@ class DeployTest(unittest.TestCase):
from libcloud.storage.base import Container from libcloud.storage.base import Container
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.no_checksum = True fdroidserver.deploy.options.no_checksum = True
fdroidserver.common.options.verbose = False fdroidserver.deploy.options.verbose = False
fdroidserver.common.options.quiet = True fdroidserver.deploy.options.quiet = True
config = {} config = {}
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
@ -937,15 +819,13 @@ class DeployTest(unittest.TestCase):
mock_driver.get_container.return_value = mock_container mock_driver.get_container.return_value = mock_container
mock_driver.upload_object_via_stream.return_value = None mock_driver.upload_object_via_stream.return_value = None
fdroidserver.deploy.update_awsbucket_libcloud( fdroidserver.deploy.update_awsbucket_libcloud(repo_section, index_only=True)
repo_section, is_index_only=True
)
mock_driver.get_container.assert_called_once_with( mock_driver.get_container.assert_called_once_with(
container_name=fdroidserver.deploy.config["awsbucket"] container_name=fdroidserver.deploy.config["awsbucket"]
) )
mock_container.list_objects.assert_called_once_with() mock_container.list_objects.assert_called_once_with()
files_to_upload = [f"fdroid/repo/{fdroidserver.deploy.INDEX_FILES[0]}"] files_to_upload = ['fdroid/repo/entry.jar']
calls = [ calls = [
mock.call( mock.call(
iterator=mock.ANY, iterator=mock.ANY,
@ -963,11 +843,11 @@ class DeployTest(unittest.TestCase):
def test_update_servergitmirrors(self): def test_update_servergitmirrors(self):
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
fdroidserver.common.options.no_keep_git_mirror_archive = False fdroidserver.deploy.options.no_keep_git_mirror_archive = False
fdroidserver.common.options.verbose = False fdroidserver.deploy.options.verbose = False
fdroidserver.common.options.quiet = True fdroidserver.deploy.options.quiet = True
config = {} config = {}
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
@ -1014,11 +894,11 @@ class DeployTest(unittest.TestCase):
def test_update_servergitmirrors_in_index_only_mode(self): def test_update_servergitmirrors_in_index_only_mode(self):
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
fdroidserver.common.options.no_keep_git_mirror_archive = False fdroidserver.deploy.options.no_keep_git_mirror_archive = False
fdroidserver.common.options.verbose = False fdroidserver.deploy.options.verbose = False
fdroidserver.common.options.quiet = True fdroidserver.deploy.options.quiet = True
config = {} config = {}
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
@ -1074,12 +954,12 @@ class DeployTest(unittest.TestCase):
def test_upload_to_servergitmirror_in_index_only_mode(self): def test_upload_to_servergitmirror_in_index_only_mode(self):
# setup parameters for this test run # setup parameters for this test run
fdroidserver.common.options = mock.Mock() fdroidserver.deploy.options = mock.Mock()
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
fdroidserver.common.options.no_keep_git_mirror_archive = False fdroidserver.deploy.options.no_keep_git_mirror_archive = False
fdroidserver.common.options.verbose = False fdroidserver.deploy.options.verbose = False
fdroidserver.common.options.quiet = True fdroidserver.deploy.options.quiet = True
fdroidserver.common.options.identity_file = None fdroidserver.deploy.options.identity_file = None
config = {} config = {}
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
@ -1150,17 +1030,15 @@ class DeployTest(unittest.TestCase):
if __name__ == "__main__": if __name__ == "__main__":
os.chdir(os.path.dirname(__file__)) os.chdir(os.path.dirname(__file__))
import argparse parser = optparse.OptionParser()
parser.add_option(
parser = argparse.ArgumentParser()
parser.add_argument(
"-v", "-v",
"--verbose", "--verbose",
action="store_true", action="store_true",
default=False, default=False,
help="Spew out even more information than normal", help="Spew out even more information than normal",
) )
parse_args_for_test(parser, sys.argv) (fdroidserver.common.options, args) = parser.parse_args(['--verbose'])
newSuite = unittest.TestSuite() newSuite = unittest.TestSuite()
newSuite.addTest(unittest.makeSuite(DeployTest)) newSuite.addTest(unittest.makeSuite(DeployTest))

View File

@ -56,9 +56,9 @@ def _build_yaml_representer(dumper, data):
parser = ArgumentParser() parser = ArgumentParser()
fdroidserver.common.setup_global_opts(parser) fdroidserver.common.setup_global_opts(parser)
fdroidserver.metadata.add_metadata_arguments(parser) fdroidserver.metadata.add_metadata_arguments(parser)
options = fdroidserver.common.parse_args(parser) options = parser.parse_args()
fdroidserver.metadata.warnings_action = options.W fdroidserver.metadata.warnings_action = options.W
fdroidserver.common.read_config() fdroidserver.common.read_config(None)
if not os.path.isdir('metadata'): if not os.path.isdir('metadata'):
print("This script must be run in an F-Droid data folder with a 'metadata' subdir!") print("This script must be run in an F-Droid data folder with a 'metadata' subdir!")

View File

@ -3,6 +3,7 @@
# http://www.drdobbs.com/testing/unit-testing-with-python/240165163 # http://www.drdobbs.com/testing/unit-testing-with-python/240165163
import inspect import inspect
import optparse
import os import os
import sys import sys
import unittest import unittest
@ -56,18 +57,16 @@ class ExceptionTest(unittest.TestCase):
if __name__ == "__main__": if __name__ == "__main__":
os.chdir(os.path.dirname(__file__)) os.chdir(os.path.dirname(__file__))
import argparse parser = optparse.OptionParser()
from testcommon import parse_args_for_test parser.add_option(
parser = argparse.ArgumentParser()
parser.add_argument(
"-v", "-v",
"--verbose", "--verbose",
action="store_true", action="store_true",
default=False, default=False,
help="Spew out even more information than normal", help="Spew out even more information than normal",
) )
parse_args_for_test(parser, sys.argv) (fdroidserver.exception.options, args) = parser.parse_args(['--verbose'])
fdroidserver.common.options = fdroidserver.exception.options
newSuite = unittest.TestSuite() newSuite = unittest.TestSuite()
newSuite.addTest(unittest.makeSuite(ExceptionTest)) newSuite.addTest(unittest.makeSuite(ExceptionTest))

View File

@ -3,6 +3,7 @@
import inspect import inspect
import json import json
import logging import logging
import optparse
import os import os
import shutil import shutil
import sys import sys
@ -32,7 +33,7 @@ class GpgsignTest(unittest.TestCase):
self.repodir.mkdir() self.repodir.mkdir()
gpgsign.config = None gpgsign.config = None
config = common.read_config() config = common.read_config(common.options)
config['verbose'] = True config['verbose'] = True
config['gpghome'] = str((self.basedir / 'gnupghome').resolve()) config['gpghome'] = str((self.basedir / 'gnupghome').resolve())
config['gpgkey'] = '1DBA2E89' config['gpgkey'] = '1DBA2E89'
@ -74,17 +75,15 @@ class GpgsignTest(unittest.TestCase):
if __name__ == "__main__": if __name__ == "__main__":
os.chdir(os.path.dirname(__file__)) os.chdir(os.path.dirname(__file__))
import argparse parser = optparse.OptionParser()
parser.add_option(
parser = argparse.ArgumentParser()
parser.add_argument(
"-v", "-v",
"--verbose", "--verbose",
action="store_true", action="store_true",
default=False, default=False,
help="Spew out even more information than normal", help="Spew out even more information than normal",
) )
common.parse_args(parser) (common.options, args) = parser.parse_args(['--verbose'])
newSuite = unittest.TestSuite() newSuite = unittest.TestSuite()
newSuite.addTest(unittest.makeSuite(GpgsignTest)) newSuite.addTest(unittest.makeSuite(GpgsignTest))

View File

@ -759,7 +759,6 @@
- ' maven { url ''libs'' }' - ' maven { url ''libs'' }'
- ' maven { url = uri("https://jitpack.io") }' - ' maven { url = uri("https://jitpack.io") }'
- ' maven { url = uri("https://maven.fabric.io/public") }' - ' maven { url = uri("https://maven.fabric.io/public") }'
- ' maven { url = URI("https://jitpack.io") }'
- ' maven { url MAVEN_REPO_CACHE }' - ' maven { url MAVEN_REPO_CACHE }'
- ' maven { url(''http://releases.marmeladburk.fidesmo.com/'') }' - ' maven { url(''http://releases.marmeladburk.fidesmo.com/'') }'
- ' maven {url "http://dl.bintray.com/tbruyelle/tbruyelle" }' - ' maven {url "http://dl.bintray.com/tbruyelle/tbruyelle" }'
@ -779,5 +778,3 @@
- ' maven{url "https://plugins.gradle.org/m2/"}' - ' maven{url "https://plugins.gradle.org/m2/"}'
- ' maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")' - ' maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")'
- ' maven(url = "https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven")' - ' maven(url = "https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven")'
- ' maven ( url = "https://jitpack.io")'
- ' maven( url = "https://oss.sonatype.org/content/repositories/snapshots/" )'

View File

@ -4,6 +4,7 @@
import git import git
import logging import logging
import optparse
import os import os
import shutil import shutil
import sys import sys
@ -14,6 +15,7 @@ from unittest import mock
from pathlib import Path from pathlib import Path
import requests import requests
from testcommon import TmpCwd, mkdtemp
localmodule = Path(__file__).resolve().parent.parent localmodule = Path(__file__).resolve().parent.parent
print('localmodule: ' + str(localmodule)) print('localmodule: ' + str(localmodule))
@ -24,7 +26,6 @@ import fdroidserver.common
import fdroidserver.import_subcommand import fdroidserver.import_subcommand
import fdroidserver.metadata import fdroidserver.metadata
from fdroidserver.exception import FDroidException from fdroidserver.exception import FDroidException
from testcommon import TmpCwd, mkdtemp, parse_args_for_test
class ImportTest(unittest.TestCase): class ImportTest(unittest.TestCase):
@ -33,6 +34,8 @@ class ImportTest(unittest.TestCase):
def setUp(self): def setUp(self):
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
self.basedir = localmodule / 'tests' self.basedir = localmodule / 'tests'
fdroidserver.import_subcommand.options = mock.Mock()
fdroidserver.import_subcommand.options.rev = None
os.chdir(self.basedir) os.chdir(self.basedir)
self._td = mkdtemp() self._td = mkdtemp()
self.testdir = self._td.name self.testdir = self._td.name
@ -143,9 +146,7 @@ class ImportTest(unittest.TestCase):
fdroidserver.import_subcommand.main() fdroidserver.import_subcommand.main()
@mock.patch('sys.argv', ['fdroid import', '-u', 'https://fake/git/url.git']) @mock.patch('sys.argv', ['fdroid import', '-u', 'https://fake/git/url.git'])
@mock.patch( @mock.patch('fdroidserver.import_subcommand.clone_to_tmp_dir', lambda a: Path('td'))
'fdroidserver.import_subcommand.clone_to_tmp_dir', lambda a, r: Path('td')
)
def test_main_local_git(self): def test_main_local_git(self):
os.chdir(self.testdir) os.chdir(self.testdir)
git.Repo.init('td') git.Repo.init('td')
@ -160,17 +161,15 @@ class ImportTest(unittest.TestCase):
if __name__ == "__main__": if __name__ == "__main__":
import argparse parser = optparse.OptionParser()
parser.add_option(
parser = argparse.ArgumentParser()
parser.add_argument(
"-v", "-v",
"--verbose", "--verbose",
action="store_true", action="store_true",
default=False, default=False,
help="Spew out even more information than normal", help="Spew out even more information than normal",
) )
parse_args_for_test(parser, sys.argv) (fdroidserver.common.options, args) = parser.parse_args(['--verbose'])
newSuite = unittest.TestSuite() newSuite = unittest.TestSuite()
newSuite.addTest(unittest.makeSuite(ImportTest)) newSuite.addTest(unittest.makeSuite(ImportTest))

Some files were not shown because too many files have changed in this diff Show More