You've already forked qBittorrent
mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-10-12 03:12:18 +02:00
Compare commits
23 Commits
release-4.
...
release-4.
Author | SHA1 | Date | |
---|---|---|---|
![]() |
97853f31f2 | ||
![]() |
66ffb7328d | ||
![]() |
9d9101186d | ||
![]() |
621ec4e92f | ||
![]() |
4b752cba4f | ||
![]() |
38c0864bf2 | ||
![]() |
c21c3d2300 | ||
![]() |
3be5273246 | ||
![]() |
37e348ed92 | ||
![]() |
36364121ba | ||
![]() |
df08bd331c | ||
![]() |
abd1ab5539 | ||
![]() |
632d33b266 | ||
![]() |
35f7e1c896 | ||
![]() |
792301dfe4 | ||
![]() |
e31cf5ac23 | ||
![]() |
0bfe6ff64b | ||
![]() |
d40c7e8833 | ||
![]() |
8e81d44b3c | ||
![]() |
97a30218bc | ||
![]() |
e9884b9513 | ||
![]() |
a63269e3e1 | ||
![]() |
d03e715708 |
2
.github/workflows/ci_file_health.yaml
vendored
2
.github/workflows/ci_file_health.yaml
vendored
@@ -2,6 +2,8 @@ name: CI - File health
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions: {}
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
12
.github/workflows/ci_macos.yaml
vendored
12
.github/workflows/ci_macos.yaml
vendored
@@ -2,6 +2,9 @@ name: CI - macOS
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
@@ -31,6 +34,9 @@ jobs:
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
export \
|
||||
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 \
|
||||
HOMEBREW_NO_INSTALL_CLEANUP=1
|
||||
brew update > /dev/null
|
||||
brew install \
|
||||
cmake ninja \
|
||||
@@ -80,11 +86,12 @@ jobs:
|
||||
- name: Build qBittorrent (Qt5)
|
||||
if: ${{ startsWith(matrix.qt_version, 5) }}
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_CXX_FLAGS="-Werror -Wno-error=deprecated-declarations" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||
@@ -98,11 +105,12 @@ jobs:
|
||||
- name: Build qBittorrent (Qt6)
|
||||
if: ${{ startsWith(matrix.qt_version, 6) }}
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Wno-gnu-zero-variadic-macro-arguments -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_CXX_FLAGS="-Wno-gnu-zero-variadic-macro-arguments -Werror -Wno-error=deprecated-declarations" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DBOOST_ROOT="${{ env.boost_path }}" \
|
||||
-DOPENSSL_ROOT_DIR="${{ env.openssl_root }}" \
|
||||
|
15
.github/workflows/ci_ubuntu.yaml
vendored
15
.github/workflows/ci_ubuntu.yaml
vendored
@@ -2,6 +2,9 @@ name: CI - Ubuntu
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
@@ -30,7 +33,7 @@ jobs:
|
||||
sudo apt update
|
||||
sudo apt install \
|
||||
build-essential cmake ninja-build pkg-config \
|
||||
libboost-dev libssl-dev zlib1g-dev
|
||||
libboost-dev libssl-dev libxkbcommon-x11-dev zlib1g-dev
|
||||
|
||||
- name: Setup ccache
|
||||
uses: Chocobo1/setup-ccache-action@v1
|
||||
@@ -65,11 +68,12 @@ jobs:
|
||||
- name: Build qBittorrent (Qt5)
|
||||
if: ${{ startsWith(matrix.qt_version, 5) }}
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror -Wno-error=deprecated-declarations" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_CXX_FLAGS="-Werror -Wno-error=deprecated-declarations" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DTESTING=ON \
|
||||
@@ -78,16 +82,17 @@ jobs:
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
DESTDIR="qbittorrent" cmake --install build --strip
|
||||
DESTDIR="qbittorrent" cmake --install build
|
||||
|
||||
- name: Build qBittorrent (Qt6)
|
||||
if: ${{ startsWith(matrix.qt_version, 6) }}
|
||||
run: |
|
||||
CXXFLAGS="$CXXFLAGS -Werror" \
|
||||
LDFLAGS="$LDFLAGS -gz" \
|
||||
cmake \
|
||||
-B build \
|
||||
-G "Ninja" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_CXX_FLAGS="-Werror" \
|
||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
||||
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||
-DQT6=ON \
|
||||
@@ -97,7 +102,7 @@ jobs:
|
||||
cmake --build build --target qbt_update_translations
|
||||
cmake --build build
|
||||
cmake --build build --target check
|
||||
DESTDIR="qbittorrent" cmake --install build --strip
|
||||
DESTDIR="qbittorrent" cmake --install build
|
||||
|
||||
- name: Prepare build artifacts
|
||||
run: |
|
||||
|
2
.github/workflows/ci_webui.yaml
vendored
2
.github/workflows/ci_webui.yaml
vendored
@@ -2,6 +2,8 @@ name: CI - WebUI
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions: {}
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
3
.github/workflows/ci_windows.yaml
vendored
3
.github/workflows/ci_windows.yaml
vendored
@@ -2,6 +2,9 @@ name: CI - Windows
|
||||
|
||||
on: [pull_request, push]
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: ${{ github.head_ref != '' }}
|
||||
|
2
.github/workflows/coverity-scan.yml
vendored
2
.github/workflows/coverity-scan.yml
vendored
@@ -5,6 +5,8 @@ on:
|
||||
- cron: '0 0 1 * *' # Monthly (1st day of month at midnight)
|
||||
workflow_dispatch: # Mainly for testing. Don't forget the Coverity usage limits.
|
||||
|
||||
permissions: {}
|
||||
|
||||
jobs:
|
||||
coverity_scan:
|
||||
name: Scan
|
||||
|
3
.github/workflows/stale_bot.yaml
vendored
3
.github/workflows/stale_bot.yaml
vendored
@@ -4,6 +4,9 @@ on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
|
35
.tx/config
35
.tx/config
@@ -1,27 +1,24 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[qbittorrent.qbittorrent_master]
|
||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||
lang_map = pt: pt_PT, zh: zh_CN
|
||||
source_file = src/lang/qbittorrent_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_master]
|
||||
file_filter = src/lang/qbittorrent_<lang>.ts
|
||||
source_file = src/lang/qbittorrent_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
minimum_perc = 23
|
||||
mode = developer
|
||||
lang_map = pt: pt_PT, zh: zh_CN
|
||||
|
||||
[qbittorrent.qbittorrentdesktop_master]
|
||||
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
|
||||
source_lang = en
|
||||
type = DESKTOP
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrent_webui]
|
||||
file_filter = src/webui/www/translations/webui_<lang>.ts
|
||||
source_file = src/webui/www/translations/webui_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
minimum_perc = 23
|
||||
mode = developer
|
||||
lang_map = pt: pt_PT, zh: zh_CN
|
||||
|
||||
[qbittorrent.qbittorrent_webui]
|
||||
file_filter = src/webui/www/translations/webui_<lang>.ts
|
||||
lang_map = pt: pt_PT, zh: zh_CN
|
||||
source_file = src/webui/www/translations/webui_en.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
[o:sledgehammer999:p:qbittorrent:r:qbittorrentdesktop_master]
|
||||
source_file = dist/unix/org.qbittorrent.qBittorrent.desktop
|
||||
source_lang = en
|
||||
type = DESKTOP
|
||||
minimum_perc = 23
|
||||
mode = developer
|
||||
|
12
Changelog
12
Changelog
@@ -1,3 +1,15 @@
|
||||
Tue Feb 28 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.5.2
|
||||
- BUGFIX: Don't unexpectedly activate queued torrents when prefetching metadata for added magnets (glassez)
|
||||
- BUGFIX: Update the cached torrent state once recheck is started (glassez)
|
||||
- BUGFIX: Be more likely to allow the system to use power saving modes (glassez)
|
||||
- WEBUI: Migrate away from unsafe function (Chocobo1)
|
||||
- WEBUI: Blacklist bad ciphers for TLS in the server (sledgehammer999)
|
||||
- WEBUI: Allow only TLS 1.2+ in the server (sledgehammer999)
|
||||
- WEBUI: Allow to set read-only directory as torrent location (glassez)
|
||||
- WEBUI: Reject requests that contain backslash in path (glassez)
|
||||
- RSS: Prevent RSS folder from being moved into itself (glassez)
|
||||
- WINDOWS: NSIS: Update Turkish, Uzbek translation (Burak Yavuz, shitcod3r)
|
||||
|
||||
Sun Feb 12 2023 - sledgehammer999 <sledgehammer999@qbittorrent.org> - v4.5.1
|
||||
- FEATURE: Re-allow to use icons from system theme (glassez)
|
||||
- BUGFIX: Fix Speed limit icon size (Nowshed H. Imran)
|
||||
|
20
configure
vendored
20
configure
vendored
@@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.71 for qbittorrent v4.5.1.
|
||||
# Generated by GNU Autoconf 2.71 for qbittorrent v4.5.2.
|
||||
#
|
||||
# Report bugs to <bugs.qbittorrent.org>.
|
||||
#
|
||||
@@ -611,8 +611,8 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='qbittorrent'
|
||||
PACKAGE_TARNAME='qbittorrent'
|
||||
PACKAGE_VERSION='v4.5.1'
|
||||
PACKAGE_STRING='qbittorrent v4.5.1'
|
||||
PACKAGE_VERSION='v4.5.2'
|
||||
PACKAGE_STRING='qbittorrent v4.5.2'
|
||||
PACKAGE_BUGREPORT='bugs.qbittorrent.org'
|
||||
PACKAGE_URL='https://www.qbittorrent.org/'
|
||||
|
||||
@@ -1329,7 +1329,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures qbittorrent v4.5.1 to adapt to many kinds of systems.
|
||||
\`configure' configures qbittorrent v4.5.2 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@@ -1400,7 +1400,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of qbittorrent v4.5.1:";;
|
||||
short | recursive ) echo "Configuration of qbittorrent v4.5.2:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@@ -1533,7 +1533,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
qbittorrent configure v4.5.1
|
||||
qbittorrent configure v4.5.2
|
||||
generated by GNU Autoconf 2.71
|
||||
|
||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
@@ -1648,7 +1648,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by qbittorrent $as_me v4.5.1, which was
|
||||
It was created by qbittorrent $as_me v4.5.2, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
$ $0$ac_configure_args_raw
|
||||
@@ -4779,7 +4779,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='qbittorrent'
|
||||
VERSION='v4.5.1'
|
||||
VERSION='v4.5.2'
|
||||
|
||||
|
||||
printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
|
||||
@@ -7237,7 +7237,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by qbittorrent $as_me v4.5.1, which was
|
||||
This file was extended by qbittorrent $as_me v4.5.2, which was
|
||||
generated by GNU Autoconf 2.71. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@@ -7297,7 +7297,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config='$ac_cs_config_escaped'
|
||||
ac_cs_version="\\
|
||||
qbittorrent config.status v4.5.1
|
||||
qbittorrent config.status v4.5.2
|
||||
configured by $0, generated by GNU Autoconf 2.71,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
AC_INIT([qbittorrent], [v4.5.1], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/])
|
||||
AC_INIT([qbittorrent], [v4.5.2], [bugs.qbittorrent.org], [], [https://www.qbittorrent.org/])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
: ${CFLAGS=""}
|
||||
|
2
dist/mac/Info.plist
vendored
2
dist/mac/Info.plist
vendored
@@ -55,7 +55,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.5.1</string>
|
||||
<string>4.5.2</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
|
@@ -74,6 +74,6 @@
|
||||
<url type="translate">https://github.com/qbittorrent/qBittorrent/wiki/How-to-translate-qBittorrent</url>
|
||||
<content_rating type="oars-1.1"/>
|
||||
<releases>
|
||||
<release version="4.5.1" date="2023-02-12"/>
|
||||
<release version="4.5.2" date="2023-02-28"/>
|
||||
</releases>
|
||||
</component>
|
||||
|
2
dist/windows/config.nsi
vendored
2
dist/windows/config.nsi
vendored
@@ -25,7 +25,7 @@
|
||||
; 4.5.1.3 -> good
|
||||
; 4.5.1.3.2 -> bad
|
||||
; 4.5.0beta -> bad
|
||||
!define /ifndef QBT_VERSION "4.5.1"
|
||||
!define /ifndef QBT_VERSION "4.5.2"
|
||||
|
||||
; Option that controls the installer's window name
|
||||
; If set, its value will be used like this:
|
||||
|
@@ -31,7 +31,7 @@ LangString inst_requires_64bit ${LANG_TURKISH} "Bu yükleyici sadece 64-bit Wind
|
||||
;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7."
|
||||
LangString inst_requires_win7 ${LANG_TURKISH} "Bu qBittorrent sürümü en az Windows 7 gerektirir."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809."
|
||||
LangString inst_requires_win10 ${LANG_TURKISH} "This installer requires at least Windows 10 1809."
|
||||
LangString inst_requires_win10 ${LANG_TURKISH} "Bu yükleyici en az Windows 10 1809 gerektirir."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_TURKISH} "qBittorrent'i kaldır"
|
||||
|
||||
|
56
dist/windows/installer-translations/uzbek.nsi
vendored
56
dist/windows/installer-translations/uzbek.nsi
vendored
@@ -1,62 +1,62 @@
|
||||
;Installer strings
|
||||
|
||||
;LangString inst_qbt_req ${LANG_ENGLISH} "qBittorrent (required)"
|
||||
LangString inst_qbt_req ${LANG_UZBEK} "qBittorrent (required)"
|
||||
LangString inst_qbt_req ${LANG_UZBEK} "qBittorrent (talab qilinadi)"
|
||||
;LangString inst_dekstop ${LANG_ENGLISH} "Create Desktop Shortcut"
|
||||
LangString inst_dekstop ${LANG_UZBEK} "Create Desktop Shortcut"
|
||||
LangString inst_dekstop ${LANG_UZBEK} "Ish Stolida Yorliq Yaratilsin"
|
||||
;LangString inst_startmenu ${LANG_ENGLISH} "Create Start Menu Shortcut"
|
||||
LangString inst_startmenu ${LANG_UZBEK} "Create Start Menu Shortcut"
|
||||
LangString inst_startmenu ${LANG_UZBEK} "Boshlash Menyusida Yorliq Yaratilsin"
|
||||
;LangString inst_startup ${LANG_ENGLISH} "Start qBittorrent on Windows start up"
|
||||
LangString inst_startup ${LANG_UZBEK} "Start qBittorrent on Windows start up"
|
||||
LangString inst_startup ${LANG_UZBEK} "qBittorrent Windows bilan birga ishga tushirilsin"
|
||||
;LangString inst_torrent ${LANG_ENGLISH} "Open .torrent files with qBittorrent"
|
||||
LangString inst_torrent ${LANG_UZBEK} "Open .torrent files with qBittorrent"
|
||||
LangString inst_torrent ${LANG_UZBEK} ".torrent fayllar qBittorrent bilan ochilsin"
|
||||
;LangString inst_magnet ${LANG_ENGLISH} "Open magnet links with qBittorrent"
|
||||
LangString inst_magnet ${LANG_UZBEK} "Open magnet links with qBittorrent"
|
||||
LangString inst_magnet ${LANG_UZBEK} "Magnit havolalar qBittorrent bilan ochilsin"
|
||||
;LangString inst_firewall ${LANG_ENGLISH} "Add Windows Firewall rule"
|
||||
LangString inst_firewall ${LANG_UZBEK} "Add Windows Firewall rule"
|
||||
LangString inst_firewall ${LANG_UZBEK} "Windows Xavfsizlik Devori qoidasi qoʻshilsin"
|
||||
;LangString inst_pathlimit ${LANG_ENGLISH} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)"
|
||||
LangString inst_pathlimit ${LANG_UZBEK} "Disable Windows path length limit (260 character MAX_PATH limitation, requires Windows 10 1607 or later)"
|
||||
LangString inst_pathlimit ${LANG_UZBEK} "Windows yoʻl uzunligi cheklovi olib tashlansin (260 belgi MAX_PATH cheklovi, Windows 10 1607 va yuqorisi talab qilinadi)"
|
||||
;LangString inst_firewallinfo ${LANG_ENGLISH} "Adding Windows Firewall rule"
|
||||
LangString inst_firewallinfo ${LANG_UZBEK} "Adding Windows Firewall rule"
|
||||
LangString inst_firewallinfo ${LANG_UZBEK} "Windows Xavfsizlik Devori qoidasini qoʻshish"
|
||||
;LangString inst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before installing."
|
||||
LangString inst_warning ${LANG_UZBEK} "qBittorrent is running. Please close the application before installing."
|
||||
LangString inst_warning ${LANG_UZBEK} "qBittorrent ishga tushgan. Iltimos, oʻrnatishdan oldin dasturni yoping."
|
||||
;LangString inst_uninstall_question ${LANG_ENGLISH} "Current version will be uninstalled. User settings and torrents will remain intact."
|
||||
LangString inst_uninstall_question ${LANG_UZBEK} "Current version will be uninstalled. User settings and torrents will remain intact."
|
||||
LangString inst_uninstall_question ${LANG_UZBEK} "Hozirgi versiya oʻchiriladi. Foydalanuvchi sozlamalari va torrentlar oʻzgarishsiz qoladi."
|
||||
;LangString inst_unist ${LANG_ENGLISH} "Uninstalling previous version."
|
||||
LangString inst_unist ${LANG_UZBEK} "Uninstalling previous version."
|
||||
LangString inst_unist ${LANG_UZBEK} "Oldingi versiyani oʻchirish."
|
||||
;LangString launch_qbt ${LANG_ENGLISH} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_UZBEK} "Launch qBittorrent."
|
||||
LangString launch_qbt ${LANG_UZBEK} "qBittorrent ishga tushirilsin."
|
||||
;LangString inst_requires_64bit ${LANG_ENGLISH} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_UZBEK} "This installer works only in 64-bit Windows versions."
|
||||
LangString inst_requires_64bit ${LANG_UZBEK} "Bu oʻrnatuvchi faqat Windows 64-bit versiyalarda ishlaydi."
|
||||
;LangString inst_requires_win7 ${LANG_ENGLISH} "This qBittorrent version requires at least Windows 7."
|
||||
LangString inst_requires_win7 ${LANG_UZBEK} "This qBittorrent version requires at least Windows 7."
|
||||
LangString inst_requires_win7 ${LANG_UZBEK} "qBittorrent bu versiyasi kamida Windows 7 talab qiladi."
|
||||
;LangString inst_requires_win10 ${LANG_ENGLISH} "This installer requires at least Windows 10 1809."
|
||||
LangString inst_requires_win10 ${LANG_UZBEK} "This installer requires at least Windows 10 1809."
|
||||
LangString inst_requires_win10 ${LANG_UZBEK} "Bu oʻrnatuvchi kamida Windows 10 1809 talab qiladi."
|
||||
;LangString inst_uninstall_link_description ${LANG_ENGLISH} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_UZBEK} "Uninstall qBittorrent"
|
||||
LangString inst_uninstall_link_description ${LANG_UZBEK} "qBittorrent oʻchirilsin"
|
||||
|
||||
;------------------------------------
|
||||
;Uninstaller strings
|
||||
|
||||
;LangString remove_files ${LANG_ENGLISH} "Remove files"
|
||||
LangString remove_files ${LANG_UZBEK} "Remove files"
|
||||
LangString remove_files ${LANG_UZBEK} "Fayllar oʻchirilsin"
|
||||
;LangString remove_shortcuts ${LANG_ENGLISH} "Remove shortcuts"
|
||||
LangString remove_shortcuts ${LANG_UZBEK} "Remove shortcuts"
|
||||
LangString remove_shortcuts ${LANG_UZBEK} "Yorliqlar oʻchirilsin"
|
||||
;LangString remove_associations ${LANG_ENGLISH} "Remove file associations"
|
||||
LangString remove_associations ${LANG_UZBEK} "Remove file associations"
|
||||
LangString remove_associations ${LANG_UZBEK} "Fayl birlashmalari oʻchirilsin"
|
||||
;LangString remove_registry ${LANG_ENGLISH} "Remove registry keys"
|
||||
LangString remove_registry ${LANG_UZBEK} "Remove registry keys"
|
||||
LangString remove_registry ${LANG_UZBEK} "Reyester kalitlari oʻchirilsin"
|
||||
;LangString remove_conf ${LANG_ENGLISH} "Remove configuration files"
|
||||
LangString remove_conf ${LANG_UZBEK} "Remove configuration files"
|
||||
LangString remove_conf ${LANG_UZBEK} "Sozlama fayllari oʻchirilsin"
|
||||
;LangString remove_firewall ${LANG_ENGLISH} "Remove Windows Firewall rule"
|
||||
LangString remove_firewall ${LANG_UZBEK} "Remove Windows Firewall rule"
|
||||
LangString remove_firewall ${LANG_UZBEK} "Windows Xavfsizlik Devori qoidasi oʻchirilsin"
|
||||
;LangString remove_firewallinfo ${LANG_ENGLISH} "Removing Windows Firewall rule"
|
||||
LangString remove_firewallinfo ${LANG_UZBEK} "Removing Windows Firewall rule"
|
||||
LangString remove_firewallinfo ${LANG_UZBEK} "Windows Xavfsizlik Devori qoidasini oʻchirish"
|
||||
;LangString remove_cache ${LANG_ENGLISH} "Remove torrents and cached data"
|
||||
LangString remove_cache ${LANG_UZBEK} "Remove torrents and cached data"
|
||||
LangString remove_cache ${LANG_UZBEK} "Torrentlar va keshlangan maʼlumotlar oʻchirilsin"
|
||||
;LangString uninst_warning ${LANG_ENGLISH} "qBittorrent is running. Please close the application before uninstalling."
|
||||
LangString uninst_warning ${LANG_UZBEK} "qBittorrent is running. Please close the application before uninstalling."
|
||||
LangString uninst_warning ${LANG_UZBEK} "qBittorrent ishga tushgan. Iltimos, oʻchirishdan oldin dasturni yoping."
|
||||
;LangString uninst_tor_warn ${LANG_ENGLISH} "Not removing .torrent association. It is associated with:"
|
||||
LangString uninst_tor_warn ${LANG_UZBEK} "Not removing .torrent association. It is associated with:"
|
||||
LangString uninst_tor_warn ${LANG_UZBEK} ".torrent birlashmasi oʻchirilmadi. U quyidagi bilan birlashgan:"
|
||||
;LangString uninst_mag_warn ${LANG_ENGLISH} "Not removing magnet association. It is associated with:"
|
||||
LangString uninst_mag_warn ${LANG_UZBEK} "Not removing magnet association. It is associated with:"
|
||||
LangString uninst_mag_warn ${LANG_UZBEK} "Magnit birlashmasi oʻchirilmadi. U quyidagi bilan birlashgan:"
|
||||
|
@@ -283,7 +283,7 @@ void showSplashScreen()
|
||||
painter.drawText(224 - painter.fontMetrics().horizontalAdvance(version), 270, version);
|
||||
QSplashScreen *splash = new QSplashScreen(splashImg);
|
||||
splash->show();
|
||||
QTimer::singleShot(1500ms, splash, &QObject::deleteLater);
|
||||
QTimer::singleShot(1500ms, Qt::CoarseTimer, splash, &QObject::deleteLater);
|
||||
qApp->processEvents();
|
||||
}
|
||||
#endif // DISABLE_GUI
|
||||
|
@@ -1050,18 +1050,6 @@ void SessionImpl::setGlobalMaxSeedingMinutes(int minutes)
|
||||
}
|
||||
}
|
||||
|
||||
void SessionImpl::adjustLimits()
|
||||
{
|
||||
if (isQueueingSystemEnabled())
|
||||
{
|
||||
lt::settings_pack settingsPack;
|
||||
// Internally increase the queue limits to ensure that the magnet is started
|
||||
settingsPack.set_int(lt::settings_pack::active_downloads, adjustLimit(maxActiveDownloads()));
|
||||
settingsPack.set_int(lt::settings_pack::active_limit, adjustLimit(maxActiveTorrents()));
|
||||
m_nativeSession->apply_settings(std::move(settingsPack));
|
||||
}
|
||||
}
|
||||
|
||||
void SessionImpl::applyBandwidthLimits()
|
||||
{
|
||||
lt::settings_pack settingsPack;
|
||||
@@ -1502,16 +1490,6 @@ void SessionImpl::processBannedIPs(lt::ip_filter &filter)
|
||||
}
|
||||
}
|
||||
|
||||
int SessionImpl::adjustLimit(const int limit) const
|
||||
{
|
||||
if (limit <= -1)
|
||||
return limit;
|
||||
// check for overflow: (limit + m_extraLimit) < std::numeric_limits<int>::max()
|
||||
return (m_extraLimit < (std::numeric_limits<int>::max() - limit))
|
||||
? (limit + m_extraLimit)
|
||||
: std::numeric_limits<int>::max();
|
||||
}
|
||||
|
||||
void SessionImpl::initMetrics()
|
||||
{
|
||||
const auto findMetricIndex = [](const char *name) -> int
|
||||
@@ -1713,10 +1691,8 @@ lt::settings_pack SessionImpl::loadLTSettings() const
|
||||
// Queueing System
|
||||
if (isQueueingSystemEnabled())
|
||||
{
|
||||
// Internally increase the queue limits to ensure that the magnet is started
|
||||
settingsPack.set_int(lt::settings_pack::active_downloads, adjustLimit(maxActiveDownloads()));
|
||||
settingsPack.set_int(lt::settings_pack::active_limit, adjustLimit(maxActiveTorrents()));
|
||||
|
||||
settingsPack.set_int(lt::settings_pack::active_downloads, maxActiveDownloads());
|
||||
settingsPack.set_int(lt::settings_pack::active_limit, maxActiveTorrents());
|
||||
settingsPack.set_int(lt::settings_pack::active_seeds, maxActiveUploads());
|
||||
settingsPack.set_bool(lt::settings_pack::dont_count_slow_torrents, ignoreSlowTorrentsForQueueing());
|
||||
settingsPack.set_int(lt::settings_pack::inactive_down_rate, downloadRateForSlowTorrents() * 1024); // KiB to Bytes
|
||||
@@ -2290,8 +2266,6 @@ bool SessionImpl::cancelDownloadMetadata(const TorrentID &id)
|
||||
}
|
||||
#endif
|
||||
m_downloadedMetadata.erase(downloadedMetadataIter);
|
||||
--m_extraLimit;
|
||||
adjustLimits();
|
||||
m_nativeSession->remove_torrent(nativeHandle, lt::session::delete_files);
|
||||
return true;
|
||||
}
|
||||
@@ -2839,8 +2813,6 @@ bool SessionImpl::downloadMetadata(const MagnetUri &magnetUri)
|
||||
const auto altID = TorrentID::fromSHA1Hash(infoHash.v1());
|
||||
m_downloadedMetadata.insert(altID);
|
||||
}
|
||||
++m_extraLimit;
|
||||
adjustLimits();
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -4957,7 +4929,7 @@ void SessionImpl::enqueueRefresh()
|
||||
{
|
||||
Q_ASSERT(!m_refreshEnqueued);
|
||||
|
||||
QTimer::singleShot(refreshInterval(), this, [this] ()
|
||||
QTimer::singleShot(refreshInterval(), Qt::CoarseTimer, this, [this]
|
||||
{
|
||||
m_nativeSession->post_torrent_updates();
|
||||
m_nativeSession->post_session_stats();
|
||||
@@ -5331,9 +5303,6 @@ void SessionImpl::handleMetadataReceivedAlert(const lt::metadata_received_alert
|
||||
if (found)
|
||||
{
|
||||
const TorrentInfo metadata {*p->handle.torrent_file()};
|
||||
|
||||
--m_extraLimit;
|
||||
adjustLimits();
|
||||
m_nativeSession->remove_torrent(p->handle, lt::session::delete_files);
|
||||
|
||||
emit metadataDownloaded(metadata);
|
||||
|
@@ -475,9 +475,7 @@ namespace BitTorrent
|
||||
lt::settings_pack loadLTSettings() const;
|
||||
void applyNetworkInterfacesSettings(lt::settings_pack &settingsPack) const;
|
||||
void configurePeerClasses();
|
||||
int adjustLimit(int limit) const;
|
||||
void initMetrics();
|
||||
void adjustLimits();
|
||||
void applyBandwidthLimits();
|
||||
void processBannedIPs(lt::ip_filter &filter);
|
||||
QStringList getListeningIPs() const;
|
||||
@@ -668,7 +666,6 @@ namespace BitTorrent
|
||||
const bool m_wasPexEnabled = m_isPeXEnabled;
|
||||
|
||||
int m_numResumeData = 0;
|
||||
int m_extraLimit = 0;
|
||||
QVector<TrackerEntry> m_additionalTrackerList;
|
||||
QVector<QRegularExpression> m_excludedFileNamesRegExpList;
|
||||
|
||||
|
@@ -1441,6 +1441,10 @@ void TorrentImpl::forceRecheck()
|
||||
if (!hasMetadata()) return;
|
||||
|
||||
m_nativeHandle.force_recheck();
|
||||
// We have to force update the cached state, otherwise someone will be able to get
|
||||
// an incorrect one during the interval until the cached state is updated in a regular way.
|
||||
m_nativeStatus.state = lt::torrent_status::checking_resume_data;
|
||||
|
||||
m_hasMissingFiles = false;
|
||||
m_unchecked = false;
|
||||
m_completedFiles.fill(false);
|
||||
|
@@ -56,10 +56,33 @@ namespace
|
||||
QList<QSslCipher> safeCipherList()
|
||||
{
|
||||
const QStringList badCiphers {u"idea"_qs, u"rc4"_qs};
|
||||
// Contains Ciphersuites that use RSA for the Key Exchange but they don't mention it in their name
|
||||
const QStringList badRSAShorthandSuites {
|
||||
u"AES256-GCM-SHA384"_qs, u"AES128-GCM-SHA256"_qs, u"AES256-SHA256"_qs,
|
||||
u"AES128-SHA256"_qs, u"AES256-SHA"_qs, u"AES128-SHA"_qs};
|
||||
// Contains Ciphersuites that use AES CBC mode but they don't mention it in their name
|
||||
const QStringList badAESShorthandSuites {
|
||||
u"ECDHE-ECDSA-AES256-SHA384"_qs, u"ECDHE-RSA-AES256-SHA384"_qs, u"DHE-RSA-AES256-SHA256"_qs,
|
||||
u"ECDHE-ECDSA-AES128-SHA256"_qs, u"ECDHE-RSA-AES128-SHA256"_qs, u"DHE-RSA-AES128-SHA256"_qs,
|
||||
u"ECDHE-ECDSA-AES256-SHA"_qs, u"ECDHE-RSA-AES256-SHA"_qs, u"DHE-RSA-AES256-SHA"_qs,
|
||||
u"ECDHE-ECDSA-AES128-SHA"_qs, u"ECDHE-RSA-AES128-SHA"_qs, u"DHE-RSA-AES128-SHA"_qs};
|
||||
const QList<QSslCipher> allCiphers {QSslConfiguration::supportedCiphers()};
|
||||
QList<QSslCipher> safeCiphers;
|
||||
std::copy_if(allCiphers.cbegin(), allCiphers.cend(), std::back_inserter(safeCiphers), [&badCiphers](const QSslCipher &cipher)
|
||||
std::copy_if(allCiphers.cbegin(), allCiphers.cend(), std::back_inserter(safeCiphers),
|
||||
[&badCiphers, &badRSAShorthandSuites, &badAESShorthandSuites](const QSslCipher &cipher)
|
||||
{
|
||||
const QString name = cipher.name();
|
||||
if (name.contains(u"-cbc-"_qs, Qt::CaseInsensitive) // AES CBC mode is considered vulnerable to BEAST attack
|
||||
|| name.startsWith(u"adh-"_qs, Qt::CaseInsensitive) // Key Exchange: Diffie-Hellman, doesn't support Perfect Forward Secrecy
|
||||
|| name.startsWith(u"aecdh-"_qs, Qt::CaseInsensitive) // Key Exchange: Elliptic Curve Diffie-Hellman, doesn't support Perfect Forward Secrecy
|
||||
|| name.startsWith(u"psk-"_qs, Qt::CaseInsensitive) // Key Exchange: Pre-Shared Key, doesn't support Perfect Forward Secrecy
|
||||
|| name.startsWith(u"rsa-"_qs, Qt::CaseInsensitive) // Key Exchange: Rivest Shamir Adleman (RSA), doesn't support Perfect Forward Secrecy
|
||||
|| badRSAShorthandSuites.contains(name, Qt::CaseInsensitive)
|
||||
|| badAESShorthandSuites.contains(name, Qt::CaseInsensitive))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return std::none_of(badCiphers.cbegin(), badCiphers.cend(), [&cipher](const QString &badCipher)
|
||||
{
|
||||
return cipher.name().contains(badCipher, Qt::CaseInsensitive);
|
||||
@@ -78,6 +101,7 @@ Server::Server(IRequestHandler *requestHandler, QObject *parent)
|
||||
setProxy(QNetworkProxy::NoProxy);
|
||||
|
||||
QSslConfiguration sslConf {QSslConfiguration::defaultConfiguration()};
|
||||
sslConf.setProtocol(QSsl::TlsV1_2OrLater);
|
||||
sslConf.setCiphers(safeCipherList());
|
||||
QSslConfiguration::setDefaultConfiguration(sslConf);
|
||||
|
||||
|
@@ -185,8 +185,11 @@ nonstd::expected<void, QString> Session::moveItem(Item *item, const QString &des
|
||||
if (!result)
|
||||
return result.get_unexpected();
|
||||
|
||||
auto srcFolder = static_cast<Folder *>(m_itemsByPath.value(Item::parentPath(item->path())));
|
||||
const auto destFolder = result.value();
|
||||
if (static_cast<Item *>(destFolder) == item)
|
||||
return nonstd::make_unexpected(tr("Couldn't move folder into itself."));
|
||||
|
||||
auto srcFolder = static_cast<Folder *>(m_itemsByPath.value(Item::parentPath(item->path())));
|
||||
if (srcFolder != destFolder)
|
||||
{
|
||||
srcFolder->removeItem(item);
|
||||
|
@@ -503,7 +503,7 @@ void TorrentFilesWatcher::Worker::removeWatchedFolder(const Path &path)
|
||||
|
||||
void TorrentFilesWatcher::Worker::scheduleWatchedFolderProcessing(const Path &path)
|
||||
{
|
||||
QTimer::singleShot(2s, this, [this, path]()
|
||||
QTimer::singleShot(2s, Qt::CoarseTimer, this, [this, path]
|
||||
{
|
||||
processWatchedFolder(path);
|
||||
});
|
||||
|
@@ -30,7 +30,7 @@
|
||||
|
||||
#define QBT_VERSION_MAJOR 4
|
||||
#define QBT_VERSION_MINOR 5
|
||||
#define QBT_VERSION_BUGFIX 1
|
||||
#define QBT_VERSION_BUGFIX 2
|
||||
#define QBT_VERSION_BUILD 0
|
||||
#define QBT_VERSION_STATUS "" // Should be empty for stable releases!
|
||||
|
||||
|
@@ -105,7 +105,8 @@ FeedListWidget::FeedListWidget(QWidget *parent)
|
||||
m_rssToTreeItemMapping[RSS::Session::instance()->rootFolder()] = invisibleRootItem();
|
||||
|
||||
m_unreadStickyItem = new FeedListItem(this);
|
||||
m_unreadStickyItem->setData(0, Qt::UserRole, QVariant::fromValue(RSS::Session::instance()->rootFolder()));
|
||||
m_unreadStickyItem->setData(0, Qt::UserRole, QVariant::fromValue(
|
||||
reinterpret_cast<intptr_t>(RSS::Session::instance()->rootFolder())));
|
||||
m_unreadStickyItem->setText(0, tr("Unread (%1)").arg(RSS::Session::instance()->rootFolder()->unreadCount()));
|
||||
m_unreadStickyItem->setData(0, Qt::DecorationRole, UIThemeManager::instance()->getIcon(u"mail-inbox"_qs));
|
||||
m_unreadStickyItem->setData(0, StickyItemTagRole, true);
|
||||
@@ -211,9 +212,10 @@ QList<QTreeWidgetItem *> FeedListWidget::getAllOpenedFolders(QTreeWidgetItem *pa
|
||||
|
||||
RSS::Item *FeedListWidget::getRSSItem(QTreeWidgetItem *item) const
|
||||
{
|
||||
if (!item) return nullptr;
|
||||
if (!item)
|
||||
return nullptr;
|
||||
|
||||
return item->data(0, Qt::UserRole).value<RSS::Item *>();
|
||||
return reinterpret_cast<RSS::Item *>(item->data(0, Qt::UserRole).value<intptr_t>());
|
||||
}
|
||||
|
||||
QTreeWidgetItem *FeedListWidget::mapRSSItem(RSS::Item *rssItem) const
|
||||
@@ -275,7 +277,7 @@ QTreeWidgetItem *FeedListWidget::createItem(RSS::Item *rssItem, QTreeWidgetItem
|
||||
{
|
||||
auto *item = new FeedListItem;
|
||||
item->setData(0, Qt::DisplayRole, u"%1 (%2)"_qs.arg(rssItem->name(), QString::number(rssItem->unreadCount())));
|
||||
item->setData(0, Qt::UserRole, QVariant::fromValue(rssItem));
|
||||
item->setData(0, Qt::UserRole, QVariant::fromValue(reinterpret_cast<intptr_t>(rssItem)));
|
||||
m_rssToTreeItemMapping[rssItem] = item;
|
||||
|
||||
QIcon icon;
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="az@latin">
|
||||
<?xml version="1.0" ?><!DOCTYPE TS><TS version="2.1" language="az@latin">
|
||||
<context>
|
||||
<name>AboutDialog</name>
|
||||
<message>
|
||||
@@ -386,8 +384,8 @@
|
||||
<location filename="../gui/addnewtorrentdialog.cpp" line="435"/>
|
||||
<source>Failed to load the torrent: %1.
|
||||
Error: %2</source>
|
||||
<comment>Don't remove the '
|
||||
' characters. They insert a newline.</comment>
|
||||
<comment>Don't remove the '
|
||||
' characters. They insert a newline.</comment>
|
||||
<translation>Torrent'i yükləmə uğursuz: %1.
|
||||
Xəta: %2</translation>
|
||||
</message>
|
||||
@@ -1205,9 +1203,9 @@ Xəta: %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/application.cpp" line="791"/>
|
||||
<source>An I/O error occurred for torrent '%1'.
|
||||
<source>An I/O error occurred for torrent '%1'.
|
||||
Reason: %2</source>
|
||||
<comment>e.g: An error occurred for torrent 'xxx.avi'.
|
||||
<comment>e.g: An error occurred for torrent 'xxx.avi'.
|
||||
Reason: disk is full.</comment>
|
||||
<translation>"%1" torrenti üçün Giriş/Çıxış xətası baş verdi
|
||||
Səbəb: %2</translation>
|
||||
@@ -1403,7 +1401,7 @@ qBittorrenti bunlar üçün əsas tətbiq etmək istəyirsiniz?</translation>
|
||||
<message>
|
||||
<location filename="../gui/rss/automatedrssdownloader.ui" line="69"/>
|
||||
<source>Rename selected rule. You can also use the F2 hotkey to rename.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Seçilmiş qaydanın adını dəyişin. Həmçinin F2 düyməsi ilə adı dəyişə bilərsiniz.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/rss/automatedrssdownloader.ui" line="137"/>
|
||||
@@ -1891,17 +1889,17 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin
|
||||
<message>
|
||||
<location filename="../base/bittorrent/dbresumedatastorage.cpp" line="458"/>
|
||||
<source>Couldn't enable Write-Ahead Logging (WAL) journaling mode. Error: %1.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Öncədən Yazma Gündəliyi (ing. - WAL) jurnallama rejimi. Xəta: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../base/bittorrent/dbresumedatastorage.cpp" line="585"/>
|
||||
<source>Couldn't obtain query result.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sorğu nəticələrini əldə etmək mümkün olmadı.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../base/bittorrent/dbresumedatastorage.cpp" line="589"/>
|
||||
<source>WAL mode is probably unsupported due to filesystem limitations.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Öncədən Yazma Gündəliyi rejimi, ehtimal ki, fayl sistemindəki məhdudiyyət səbəbindən dəstəklənmir.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../base/bittorrent/dbresumedatastorage.cpp" line="676"/>
|
||||
@@ -2597,7 +2595,7 @@ Bu formatlar dəstəklənir: S01E01, 1x1, 2017.12.31 və 31.12.2017 (Həmçinin
|
||||
<message>
|
||||
<location filename="../gui/deletionconfirmationdialog.cpp" line="45"/>
|
||||
<source>Are you sure you want to remove '%1' from the transfer list?</source>
|
||||
<comment>Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list?</comment>
|
||||
<comment>Are you sure you want to remove 'ubuntu-linux-iso' from the transfer list?</comment>
|
||||
<translation>"%1" faylını köçürmə sayahısından silmək istədiyinizə əminsiz?</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -5180,10 +5178,6 @@ Lütfən, əl ilə qyraşdırın.</translation>
|
||||
<source>Show splash screen on start up</source>
|
||||
<translation>Başlanğıcda qarşılama ekranını göstərmək</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start qBittorrent minimized</source>
|
||||
<translation type="vanished">qBittorent'i treyə yığılmış halda başlatmaq</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/optionsdialog.ui" line="443"/>
|
||||
<source>Confirmation on exit when torrents are active</source>
|
||||
@@ -5713,10 +5707,6 @@ serveri tərəfindən istifadə olunan domen adını göstərməlisiniz.
|
||||
<source>Show torrent options</source>
|
||||
<translation>Torrent parametrlərini göstərmək</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When qBittorrent is started, the main window will be minimized</source>
|
||||
<translation type="vanished">qBittorrent başladıldıqda, əsas pəncrə treyə yığılacaq</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/optionsdialog.ui" line="440"/>
|
||||
<source>Shows a confirmation dialog when exiting with active torrents</source>
|
||||
@@ -5852,17 +5842,17 @@ Manual: Various torrent properties (e.g. save path) must be assigned manually</s
|
||||
<message>
|
||||
<location filename="../gui/optionsdialog.ui" line="209"/>
|
||||
<source>Use icons from system theme</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sistem mövzusundakı nişandan istifadə etmək.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/optionsdialog.ui" line="411"/>
|
||||
<source>Window state on start up:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sistem açıldıqda pəncərnin vəziyyəti:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/optionsdialog.ui" line="418"/>
|
||||
<source>qBittorrent window state on start up</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sistemin açılışında qBittorrent pəncərəsinin vəziyyəti</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/optionsdialog.ui" line="875"/>
|
||||
@@ -5913,9 +5903,9 @@ Use newlines to separate multiple entries. Can use wildcards as outlined below.
|
||||
[...]: sets of characters can be represented in square brackets.
|
||||
|
||||
Examples
|
||||
*.exe: filter '.exe' file extension.
|
||||
*.exe: filter '.exe' file extension.
|
||||
readme.txt: filter exact file name.
|
||||
?.txt: filter 'a.txt', 'b.txt' but not 'aa.txt'.
|
||||
?.txt: filter 'a.txt', 'b.txt' but not 'aa.txt'.
|
||||
readme[0-9].txt: filter 'readme1.txt', 'readme2.txt' but not 'readme10.txt'.</source>
|
||||
<translation>Qara siyahı, endiriləcək torrent(lər)in siyahısından fayl adlarını çıxarır.
|
||||
Bu ada uyğun fayllara avtomatik "Endirilməsin" parametri təyin olunacaq.
|
||||
@@ -6476,12 +6466,12 @@ readme[0-9].txt: "readme1ştxt", "readme2ştxt"-ni seçir, l
|
||||
<message>
|
||||
<location filename="../gui/optionsdialog.cpp" line="256"/>
|
||||
<source>Minimized</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Yığılmış</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/optionsdialog.cpp" line="258"/>
|
||||
<source>Hidden</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Gizli</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/optionsdialog.cpp" line="273"/>
|
||||
@@ -6859,7 +6849,7 @@ readme[0-9].txt: "readme1ştxt", "readme2ştxt"-ni seçir, l
|
||||
<message>
|
||||
<location filename="../gui/properties/peerlistwidget.cpp" line="119"/>
|
||||
<source>Relevance</source>
|
||||
<comment>i.e: How relevant this peer is to us. How many pieces it has that we don't.</comment>
|
||||
<comment>i.e: How relevant this peer is to us. How many pieces it has that we don't.</comment>
|
||||
<translation>Uyğunluq</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -7736,13 +7726,13 @@ Bu qoşmalar söndürülüb.</translation>
|
||||
<message>
|
||||
<location filename="../app/cmdoptions.cpp" line="155"/>
|
||||
<source>Parameter '%1' must follow syntax '%1=%2'</source>
|
||||
<comment>e.g. Parameter '--webui-port' must follow syntax '--webui-port=value'</comment>
|
||||
<comment>e.g. Parameter '--webui-port' must follow syntax '--webui-port=value'</comment>
|
||||
<translation>"%1" parametri '%1=%2' sintaksisin ilə uzlaşmalıdır</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../app/cmdoptions.cpp" line="205"/>
|
||||
<source>Parameter '%1' must follow syntax '%1=%2'</source>
|
||||
<comment>e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>'</comment>
|
||||
<comment>e.g. Parameter '--webui-port' must follow syntax '--webui-port=<value>'</comment>
|
||||
<translation>"%1" parametri '%1=%2' sintaksisi ilə uzlaşmalıdır</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -7753,7 +7743,7 @@ Bu qoşmalar söndürülüb.</translation>
|
||||
<message>
|
||||
<location filename="../app/cmdoptions.cpp" line="276"/>
|
||||
<source>Parameter '%1' must follow syntax '%1=%2'</source>
|
||||
<comment>e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>'</comment>
|
||||
<comment>e.g. Parameter '--add-paused' must follow syntax '--add-paused=<true|false>'</comment>
|
||||
<translation>"%1" parametri '%1=%2' sintaksisi ilə uzlaşmalıdır</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -8679,7 +8669,7 @@ No further notices will be issued.</source>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/search/searchwidget.ui" line="79"/>
|
||||
<source>There aren't any search plugins installed.
|
||||
<source>There aren't any search plugins installed.
|
||||
Click the "Search plugins..." button at the bottom right of the window to install some.</source>
|
||||
<translation>Quraşdırılmış axtarış qoşması yoxdur.
|
||||
Onlardan bəzilərini quraşdırmaq üçün pəncərənin aşağı-sağındakı "Axtarış qoşmaları..." düyməsinə vurun.</translation>
|
||||
@@ -9531,8 +9521,8 @@ Onlardan bəzilərini quraşdırmaq üçün pəncərənin aşağı-sağındakı
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/torrentcategorydialog.cpp" line="84"/>
|
||||
<source>Category name cannot contain '\'.
|
||||
Category name cannot start/end with '/'.
|
||||
<source>Category name cannot contain '\'.
|
||||
Category name cannot start/end with '/'.
|
||||
Category name cannot contain '//' sequence.</source>
|
||||
<translation>Kateqoriya adında '\' ola bilməz
|
||||
Kateqoriya adı '/' ilə başlaya və bitə bilməz
|
||||
@@ -10570,13 +10560,13 @@ Başqa ad verin və yenidən cəhd edin.</translation>
|
||||
<message>
|
||||
<location filename="../gui/transferlistmodel.cpp" line="144"/>
|
||||
<source>[F] Downloading metadata</source>
|
||||
<comment>Used when forced to load a magnet link. You probably shouldn't translate the F.</comment>
|
||||
<comment>Used when forced to load a magnet link. You probably shouldn't translate the F.</comment>
|
||||
<translation>[F] Meta verilənləri endirilir</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gui/transferlistmodel.cpp" line="145"/>
|
||||
<source>[F] Downloading</source>
|
||||
<comment>Used when the torrent is forced started. You probably shouldn't translate the F.</comment>
|
||||
<comment>Used when the torrent is forced started. You probably shouldn't translate the F.</comment>
|
||||
<translation>[F] Endirilir</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -10589,7 +10579,7 @@ Başqa ad verin və yenidən cəhd edin.</translation>
|
||||
<message>
|
||||
<location filename="../gui/transferlistmodel.cpp" line="148"/>
|
||||
<source>[F] Seeding</source>
|
||||
<comment>Used when the torrent is forced started. You probably shouldn't translate the F.</comment>
|
||||
<comment>Used when the torrent is forced started. You probably shouldn't translate the F.</comment>
|
||||
<translation>[F] Göndərilir</translation>
|
||||
</message>
|
||||
<message>
|
||||
@@ -11362,7 +11352,7 @@ Başqa ad verin və yenidən cəhd edin.</translation>
|
||||
<message>
|
||||
<location filename="../webui/webapplication.cpp" line="161"/>
|
||||
<source>Unacceptable session cookie name is specified: '%1'. Default one is used.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sessiya kuki faylına verilmiş bu ad qəbuledilməzdir: "%1". Standart bir ad istifadə edildi.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../webui/webapplication.cpp" line="196"/>
|
||||
@@ -11540,4 +11530,4 @@ Başqa ad verin və yenidən cəhd edin.</translation>
|
||||
<translation>%1dəq</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
</TS>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user